c++ - 如何将字符串的所有单词写入不同的变量?

标签 c++ string cin

我想获取一行字符串并将每个单词写入它自己的变量中,以便我可以在 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/

相关文章:

java - 如何在java中用两个单引号替换字符串中的单引号?

c++ - std::cin >> vector[i] 不会让迭代器正常工作?

c++ - 从其他文件C++控制文件中的编译器指令

c++ - 将矩阵传递给函数的问题

java - 如何在java中将字符串拆分为字符串和整数?

c - 在 C 中的嵌套循环中使用 strtok() 吗?

c++ - 在C++中,如何获取Linux中服务的路径?

c++ - 完全重写VMT(虚拟方法表)

c++ - 在 vector<string> 中存储两个间隔字符串

c++ - std::cin 错误状态和变量变化