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

How to write all words of a string into different variables?

本文关键字:变量 单词写 字符串      更新时间:2023-10-16

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

我试过了:

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

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

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

getline(cin, string1);

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

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

cin >> varx;

只有当五重物中有一些东西时,这才有用。否则,系统会再次要求用户输入。

编辑:刚刚找到这个,对我有用。无论如何,谢谢!C++ cin 空格问题

你走在正确的轨道上。您可以使用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;
}

像这样将东西写到不同的变量通常是错误的答案。似乎你想要一个类似数组的东西。

听起来你使用getline

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

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

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