2011-07-15 14 views
0

通常の文字列でgetline文字列をトラバースする方法はありますか?getline文字列内の文字列の取得

string nextLine; 

getline(fin, nextLine); 

nextLine = "2 BIRTH OCT 30 1998"; 

string stringTraverse = ?; 

stringTraverseは、すべての単語が読み取られるまで「2」、次に「BIRTH」にする必要があります。

+0

のstd :: getlineのが持っていますこれとは何の関係もありません。特に、あなたがすぐに "フィン"(それが何であれ)から検索した文字列を_すぐに上書きするからです。 2行目は完全に無関係です。 –

答えて

2

nextLine.c_str()でsscanfを使用して各部分を取得できます。また、文字列ストリームにnextLineを入れた後、ストリームは疑似ロジックを以下に示しそう

stringstream s(nextLine); 
while (s >> some_string) 
    //do stuff with string piece 
+0

なぜ 'stringstream(nextLine);'だけではないのですか? –

+0

@Kerrek、それを指摘してくれてありがとう、なぜ私はそれをやったのかわからない –

0

完了するまで読んで(テストしていませんが、そのようになっているはずです):

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); 
関連する問題