通常の文字列でgetline文字列をトラバースする方法はありますか?getline文字列内の文字列の取得
string nextLine;
getline(fin, nextLine);
nextLine = "2 BIRTH OCT 30 1998";
string stringTraverse = ?;
stringTraverseは、すべての単語が読み取られるまで「2」、次に「BIRTH」にする必要があります。
通常の文字列でgetline文字列をトラバースする方法はありますか?getline文字列内の文字列の取得
string nextLine;
getline(fin, nextLine);
nextLine = "2 BIRTH OCT 30 1998";
string stringTraverse = ?;
stringTraverseは、すべての単語が読み取られるまで「2」、次に「BIRTH」にする必要があります。
nextLine.c_str()でsscanfを使用して各部分を取得できます。また、文字列ストリームにnextLineを入れた後、ストリームは疑似ロジックを以下に示しそう
stringstream s(nextLine);
while (s >> some_string)
//do stuff with string piece
なぜ 'stringstream(nextLine);'だけではないのですか? –
@Kerrek、それを指摘してくれてありがとう、なぜ私はそれをやったのかわからない –
完了するまで読んで(テストしていませんが、そのようになっているはずです):
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);
のstd :: getlineのが持っていますこれとは何の関係もありません。特に、あなたがすぐに "フィン"(それが何であれ)から検索した文字列を_すぐに上書きするからです。 2行目は完全に無関係です。 –