使用较少的代码行解析cmd输入

时间:2018-02-27 16:10:37

标签: c++ input getline

我可以用更少的代码行完成这项工作吗?

    string input;
    getline(cin, input);        
    istringstream ss(input);
    vector<int> v;
    int n;
    while (ss >> n)
    {
        v.push_back(n);
    }

编辑:我编辑的问题更具体。

1 个答案:

答案 0 :(得分:0)

while循环 - 从输入流中读取并将值放入容器中 - 可以替换为std::copy

std::copy(std::istream_iterator<int>(ss), std::istream_iterator<int>(),
          std::back_inserter(v));

其中std::istream_iterator<int>(ss)表示输入的开始,std::istream_iterator<int>()是输入的结束,最后std::back_inserter(v)是值的位置(执行v.push_back())。

尽管如此,请记住,这会打破非数字输入。

另见std::copy - Parameters

  

<强>参数
  第一个,最后一个 - 要复制的元素范围
   d_first - 目标范围的开头。

std::back_inserter或更确切地说std::back_insert_iterator