Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

multiple numbers input on one line

Tags:

c++

input

I want to know how I can accept multiple numbers on one line without exactly knowing in advance how many.

So for example if I have 1 2 3 4 as input I could use :

cin >> a >> b >> c >> d;

But if I don't know that the amount is 4 then I can't use that approach. What would be the right way to store the input into a vector?

Thanks in advance

like image 933
gelatine1 Avatar asked Mar 20 '23 09:03

gelatine1


1 Answers

You can read all input until the new line character in an object of type std::string and then extract numbers from this string and place them for example in a vector.

Here is a ready to use example

#include <iostream>
#include <sstream>
#include <iterator>
#include <string>
#include <vector>

int main() 
{
    std::string s;

    std::getline( std::cin, s );

    std::istringstream is( s );

    std::vector<int> v( ( std::istream_iterator<int>( is ) ), std::istream_iterator<int>() );

    for ( int x : v) std::cout << x << ' ';
    std::cout << std::endl;

    return 0;
}

If you would input a line of numbers

1 2 3 4 5 6 7 8 9 

then the program output from the vector will be

1 2 3 4 5 6 7 8 9 

In this program you could substitute statement

std::vector<int> v( ( std::istream_iterator<int>( is ) ), std::istream_iterator<int>() );

for

std::vector<int> v;
int x;

while ( is >> x ) v.push_back( x );
like image 145
Vlad from Moscow Avatar answered Mar 23 '23 01:03

Vlad from Moscow