1

stringstream / getline()を使用して文字列を解析するwhileループがありますが、ループの結果を操作するのに問題があります。ループは文字列を3つの部分に分割し、ループのそのサイクルの変数「word」に各単語を配置します。ただし、whileループの外で使用できるように、各部分を変数または配列に格納するにはどうすればよいですか?

ループ

string word;
    stringstream stream(cmdArgs.c_str());
    while( getline(stream, word, ' ') )
          // Manipulate results

変数「cmdArgs」は文字列です。

4

2 に答える 2

4
string word;
vector<string> words;
stringstream stream(cmdArgs.c_str());
while( getline(stream, word, ' ') )
{
    words.push_back(words);
}
// Manipulate results

ベクトルクラスを参照してください:http ://www.cplusplus.com/reference/stl/vector/

于 2012-11-01T15:00:55.190 に答える
2

ベクトルを使用すると、文字列を単語に分割し、単語の数に関係なく、各単語を個別に保存できます。

string word;  
stringstream stream(cmdArgs.c_str());  
vector<string> words;  
while( getline(stream, word, ' ') )  
{  
    words.push_back(word);  
}  

正確に3つの単語があると確信している場合は、単純な配列を使用することもできます。

string word;  
stringstream stream(cmdArgs.c_str());  
string words[3];  
int index = 0;  
while( getline(stream, word, ' ') )  
{  
    words[index++] = word;  
}  

ただし、着信文字列が予想よりも長い場合は、その配列がオーバーフローします。

于 2012-11-01T15:12:02.427 に答える