Получение строк в строке getline - PullRequest
0 голосов
/ 15 июля 2011

Есть ли способ пройти строку getline с нормальной строкой.

string nextLine;

getline(fin, nextLine);

nextLine = "2 BIRTH OCT 30 1998";

string stringTraverse = ?;

stringTraverse должен быть равен «2», затем «BIRTH», пока все слова не будут прочитаны.

Ответы [ 2 ]

2 голосов
/ 15 июля 2011

вы можете использовать sscanf для nextLine.c_str (), чтобы получить каждый кусок. В качестве альтернативы поместите nextLine в поток строк и затем читайте, пока поток не будет сделан, так что

stringstream s(nextLine);
while (s >> some_string)
    //do stuff with string piece
0 голосов
/ 15 июля 2011

Ниже приведена псевд логика (не проверена, но должна выглядеть так):

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);
...