我想在一行中从用户那里获取多个数字,并将其存储在一个 vector 中。我就是这样做的:
vector<int> numbers;
int x;
while (cin >> x)
numbers.push_back(x);
但是,在输入我的号码并按回车键后,如下所示:
1 2 3 4 5
它将数字放入 vector 中,然后等待更多输入,这意味着我必须输入 Ctrl+Z
才能退出循环。如何在获取一行整数后自动退出循环,从而不必输入 Ctrl+Z
?
最佳答案
实现此目的的最简单方法是使用字符串流:
#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);
要验证输入,在循环之后你可以这样做:
if( !ss.eof() )
{
// Invalid Input, throw exception, etc
}
关于c++ - 我怎么能只使用一次cin?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26271319/