1

我想得到一行字符串并将每个单词写入它自己的变量中,这样我就可以在 if 子句中使用它们。

我试过了:

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

但这仅在输入 4 个单词时才有效。我需要一种计算单词的方法,因为我不知道用户输入的单词是 1、2、3、4 还是更多。

也许有一种方法可以获取整个字符串:

getline(cin, string1);

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

我还尝试将 cinbuffer 写入变量,但我能做到这一点的唯一方法是

cin >> varx;

仅当 cinbuffer 中有某些内容时才有用。如果不是,则再次要求用户输入。

编辑:刚刚发现这个,对我有用。不管怎么说,还是要谢谢你! C++ cin 空格问题

4

3 回答 3

2

你在正确的轨道上。您可以读取一行,getline()然后使用 anistringstream将该行视为它自己的流。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;

}
于 2012-04-28T17:59:47.387 回答
0

像这样将内容写入不同的变量通常是错误的答案。似乎您想要类似数组的东西。

于 2012-04-28T17:50:41.040 回答
0

听起来你使用 getline

http://www.cplusplus.com/reference/string/getline/

然后使用诸如 boost split 之类的东西将每个项目转储到一个数组中

http://www.cplusplus.com/faq/sequences/strings/split/

于 2012-04-28T17:51:47.300 回答