2012-04-28 59 views
1

我想要得到一串字符串并将每个单词写入它自己的变量,以便我可以在if子句中使用它们。如何将一个字符串的所有单词写入不同的变量?

我想:

cin >> var1; 
cin >> var2; 
cin >> var3; 
cin >> var4; 

但是这只能如果输入4个字。我需要一种计算单词的方法,因为我不知道用户输入的是否是1,2,3,4或更多的单词。

也许有与得到整个字符串的方式:

getline(cin, string1); 

它切成后话。 对不起,我搜索了很多,但我找不到方法。

我也试图在cinbuffer写入一个变量,但我可以做到这一点的唯一方法是使用

cin >> varx; 

这是唯一有用的,如果有什么东西在cinbuffer。否则,用户会被要求再次输入。

编辑:刚发现这个,适合我。不管怎么说,还是要谢谢你! C++ cin whitespace question

回答

2

你在正确的轨道上。您可以用getline()读取一行,然后使用istringstream将该行视为其自己的流。改变这个你碰巧正在使用的任何类型的T

#include <algorithm> 
#include <iostream> 
#include <iterator> 
#include <sstream> 
#include <vector> 

int main(int argc, char** argv) { 

    using namespace std; 

    vector<T> values; 

    { 
     string line; 
     getline(cin, line); 
     istringstream stream(line); 

     // Read values into vector. 
     copy(istream_iterator<T>(stream), istream_iterator<T>(), 
      back_inserter(values)); 
    } 

    cout << "Received " << values.size() << " values:\n"; 

    // Copy values to output. 
    copy(values.begin(), values.end(), 
     ostream_iterator<T>(cout, "\n")); 

    return 0; 

} 
+0

刚刚发现了istringstream,但谢谢! – mohrphium 2012-04-28 18:01:24

+0

@mohrphium:没问题。 '',''和''也是非常有用的。 – 2012-04-28 18:02:58

0

将事情写入像这样的不同变量通常是错误的答案。好像你想要一个像array的东西。

相关问题