我想获取一行字符串并将每个单词写入它自己的变量中,以便我可以在 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
最佳答案
您走在正确的轨道上。您可以使用 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;
}
关于c++ - 如何将字符串的所有单词写入不同的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10365945/