我想获得一行字符串并将每个单词写入其自己的变量中,以便我可以在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答案 0 :(得分: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;
}
答案 1 :(得分:0)
将事物写入这样的不同变量通常是错误的答案。看起来你想要像array这样的东西。
答案 2 :(得分:0)