C++ 读入一行字符串作为整数?

标签 c++ vector char int line

我正在尝试读取一行带有数字的字符串字符(例如“30 40 50 20”)并将它们放入 vector 中。我还需要避免空格和换行符。但是当我读取输入时,它没有看到字符串“30”,而是看到了字符“3”和“4”。

void Input() {
        getline(cin,line, '\n');
        for (int i = 0; i < line.length(); i++) {
            if (! (isspace(line[i]))) {
                cout << line[i] << ", ";
                    scores.push_back(line[i]);//(atoi(input));
            }
        }
        cout << scores.size() << "! ";
    }

像“30 40 50”这样的行不会给出大小为 3 的 vector ,它会给出大小为 6 的 vector 。 解决此问题的最佳方法是什么?

编辑:我应该在原始消息中澄清这是一个挑战,我无法在原始案例中包含字符串流库。

最佳答案

我认为您在 解析之前抓取整行是正确的,否则您会陷入困境。但你实际上必须做一些解析。现在您只是拉出单个字符。

以下内容不是最佳的,但它可以帮助您开始 — 继续使用格式化流提取,但与文件中的这一行隔离。

所以:

void Input()
{
    getline(cin, line, '\n');
    istringstream ss(line);

    int val;
    while (ss >> val)
      scores.push_back(val);

    cout << scores.size() << "! ";
}

关于C++ 读入一行字符串作为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34657505/

相关文章:

c++ - 减少GPU和CPU之间的带宽(发送原始数据或先预计算)

c++ - 错误 : expected primary-expression before 'char'

c++ - 错误: declared here unique_ptr(const unique_ptr&) = delete;

c++ - 类的二维 vector 在访问函数时出错

c++ - 尝试加载文件 : Vector subscript out of range? 时出现运行时错误

c++ - vector 的初始化 vector

c - strtok 未按预期工作,未拆分字符串

c# - 从 C# 中的 C++ dll 声明其返回值是 2 点的函数?

对 C 中的 int、char 和 EOF 感到困惑

c - 用 C 和 Win32 API 编程 : Comparing Strings