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 回答