【问题标题】:How would I enter multiple inputs into a vector with only one line of input?如何将多个输入输入到只有一行输入的向量中?
【发布时间】:2016-05-14 16:23:07
【问题描述】:

如何将一行中的多个整数输入到 C++ 中的向量中?喜欢:

请输入整数:1 2 3 4 5

代码看起来像:

vector<int> intV;
cout << "Please enter integers: ";
cin >> intV;

【问题讨论】:

  • @TheCoxer 使用如下循环:while(cin &gt;&gt; num) { intV.push_back(num); }
  • @πάνταῥεῖ 答案在此处查看 vvvvvvvvvvvvvvvvvvvv ;)
  • @TheCoxer 或者你可以提供一个重载的std::istream&amp; operator&gt;&gt;(std::istream&amp;, std::vector&lt;int&gt;&amp;)
  • @flatmouse 没有单一的答案,但问题的解决方案太多了。
  • 另一个想法是使用getlineistringstreamistream_iterator 和范围构造函数,但在你的情况下它是一个矫枉过正。

标签: c++ c++11 vector input integer


【解决方案1】:

如果你真的想要,你可以重载operator&gt;&gt;,如下所示。

std::istream& operator>>(std::istream& _is, std::vector<int>& _vec) {
    int data;
    while (_is >> data)
        _vec.push_back(data);
    return _is;
}

或者更灵活,

template<typename _Ty> std::istream& operator>>(std::istream& _is, std::vector<_Ty>& _vec) {
    _Ty data;
    while (_is >> data)
        _vec.push_back(data);
    return _is;
}

【讨论】:

  • 必须注意,此运算符提取整数直到 EOF(或找到第一个“坏”字符),而不是直到行尾。要按照 OP 所说的执行,您必须首先执行 getline,将结果放入 istringstream,然后才使用此运算符。
猜你喜欢
  • 1970-01-01
  • 2011-05-09
  • 1970-01-01
  • 2020-03-09
  • 2022-11-02
  • 1970-01-01
  • 1970-01-01
  • 2018-04-08
  • 1970-01-01
相关资源
最近更新 更多