Есть ли способ пройти строку getline с нормальной строкой.
string nextLine; getline(fin, nextLine); nextLine = "2 BIRTH OCT 30 1998"; string stringTraverse = ?;
stringTraverse должен быть равен «2», затем «BIRTH», пока все слова не будут прочитаны.
вы можете использовать sscanf для nextLine.c_str (), чтобы получить каждый кусок. В качестве альтернативы поместите nextLine в поток строк и затем читайте, пока поток не будет сделан, так что
stringstream s(nextLine); while (s >> some_string) //do stuff with string piece
Ниже приведена псевд логика (не проверена, но должна выглядеть так):
size_t word = 0, currentSpace; while(string::npos != (currentSpace = nextLine.find(" "))) { stringTraverse = nextLine.substr(word, currentSpace); while(nextLine[++currentSpace] == " "); word = currentSpace; // ... use it } if(nextLine[word] != 0) stringTraverse = nextLine.substr(word);