Operacje na string'ach

0

mam taką linię tekstu :

jkremski:x:2371:1001:Jacek Kremski,,,:/home/jkremski:/bin/bash

Mam też 3 stringi oraz jedną zmienną int
login to jkremski, id 2371, imie , nazwisko widać
Chcę to sprawnie wczytać do tych zmiennych :

bool CzytajImieNazwisko(const char * LiniaWpisu, std::string & Imie, std::string & Nazwisko,string & Login, int & id) {

istringstream StrmWe(LiniaWpisu);

char LiniaDanych[ROZMIAR];
StrmWe.getline(LiniaDanych,ROZMIAR,',');
if (StrmWe.fail()) return false;

// trzymam teraz to co potrzebuję w tablicy znakowej.

Jak widać to co chcę wyodrębnić, oddzielone jest znakami ':' . Czy istnieje coś w stylu

while( SrmWe.ignore(2000,':') ) StrmWe >> login ;
0

Split-a z pythona chyba nie ma, ale być może to http://www.cplusplus.com/reference/string/string/substr/ pomoże ci podzielić go na kawałki względem tego znaku.

0

Moze to dosc lopatologiczna metoda, ale od czegos warto zacząć. Niestety po pewnym razie strumien wejsciowy jest w stanie fail , zaznaczylem to

 istringstream StrmWe(LiniaWpisu);

char u_login[ROZMIAR];
StrmWe.getline(u_login,ROZMIAR,':');
if (StrmWe.fail()) return false;

StrmWe.ignore(1000,':');
StrmWe.ignore(1000,':');


char u_id[100];
StrmWe.getline(u_id,ROZMIAR,':');
StrmWe.str(u_id);
StrmWe>>id;



StrmWe.ignore(1000,':');
StrmWe.ignore(1000,':');  // tutaj dokonuje się stan fail(), gdy usune te dwie linie dziala ok


if (StrmWe.fail()) cout<<"blad";  // tutaj jest cos nie tak 

char dane [200];
StrmWe.getline(dane,ROZMIAR,',');

StrmWe.str(dane);

StrmWe>>Imie>>Nazwisko;

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