cin directly to vector<int>, break loop when no more data

爱⌒轻易说出口 提交于 2019-12-06 06:04:56

You can use sstream lib:

#include <vector>
#include <string>
#include <sstream>
#include <iostream>
#include <iterator>
using namespace std;

int main(int argc, char ** argv) {

    string buf;

    while(getline(cin, buf)) {

        istringstream ssin(buf);
        vector<int> intVector;
        int input;
        while(ssin >> input) {
            intVector.push_back(input);
        }

        //print vector contents
        cout << intVector.size() << endl;
        copy(intVector.begin(), intVector.end(), ostream_iterator<int>(cout, " "));
        cout << "\n";
    }

    return 0;
}

What about

vector<int> intVector( std::istream_iterator<int>( std::cin ), 
                       std::istream_iterator<int>() );

If you want to avoid errors, such as inserting a character into a integer variable, you could do:

while (some condition) {
  if (!(std::cin >> int_variable)) {
    std::cin.clear();
    std::cin.ignore(1024, '\n');
  } else {
    array.push_back(int_variable);
    // Anything else or increment the condition variable
  }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!