我怎么才能使用cin一次?

Sha*_*dow 3 c++

我希望从一行中获取用户的多个数字,并将其存储在向量中.这就是我这样做的方式:

vector<int> numbers;
int x;
while (cin >> x)
    numbers.push_back(x);
Run Code Online (Sandbox Code Playgroud)

但是,在输入我的号码并按下回车后,就像这样:

1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)

它将数字放在向量中,然后等待更多输入,这意味着我必须进入Ctrl+Z退出循环.获取一行整数后如何自动退出循环,这样我就不必输入Ctrl+Z

P0W*_*P0W 9

实现此目的的最简单方法是使用字符串流:

#include <sstream>
//....

std::string str;
std::getline( std::cin, str ); // Get entire line as string
std::istringstream ss(str);

while ( ss >> x ) // Now grab the integers
    numbers.push_back(x); 
Run Code Online (Sandbox Code Playgroud)

要验证输入,循环后您可以执行以下操作:

if( !ss.eof() )
{
   // Invalid Input, throw exception, etc
}
Run Code Online (Sandbox Code Playgroud)