Dzielenie tekstu według rozdzielacza

0

Witam. Mam taki problem: mam np. taki tekst: "siemka|2345|cześć|koniec|cos" i teraz chcę pobrać z niego np. 3 część czyli w tym wypadku wyraz "cześć". Rozdzielaczem jest znak "|". W jaki sposób można to zrobić?
Jeżeli taki temat już gdzieś istnieje to przepraszam, ale szukałem już na tym i innych forach i nic nie znalazłem.
Mój kompilator to: microsoft visual c++ express 2008
Z góry bardzo dziękuję i czekam na pomoc :)

1

Jeśli nie zależy ci na ładnym kodzie:

/** text - tekst w którym szykamy fragmentu
 ndx - numer fragmentu, INDEKSOWANY OD 1 (jeśli wolisz od 0, dodaj na początku funkcji ndx++ ;) 
 separator - znak dzielący

 sample: puts(f("ala|ma|kota", 2, '|')); Output == "ma" */
char* f(char *text, int ndx, char separator)
{
	char *prev = text;
	char *curr = text;
        while(1)
	{
		if (*curr == separator)
		{
			ndx--;
			if (ndx == 0)
			{
				prev++;
				int size = (int)(curr - prev);
				char* result = (char*)malloc(size + 1);
				int i;
				for (i = 0; i < size; i++)
				{ result[i] = prev[i]; }
				result[size] = 0;
				return result;
			}
			else prev = curr;
		}
		curr++;
	}
}

Jeśli zależy, napisz własną funkcję split (nie słyszałem o takiej w bibliotece standardowej C++). W C# ten kod wyglądałby tak: tekst.Split('|')[1];

0
string slice(string str, int index, char separator) {
    stringstream ss(str);
    int size = str.length() + 1;
    char buff[size];
    int i = 0;
    while(ss.getline(buff, size, separator)) {
        ++i;
        if(i == index)
            return string(buff);
    }
    return "";
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1