c++ - 我怎么能只使用一次cin?

标签 c++

我想在一行中从用户那里获取多个数字,并将其存储在一个 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/

相关文章:

c++ - 带有 C++ DLL 的 Excel-VBA 有时会崩溃

C++:如何阻止编译器使用大模板参数发送垃圾邮件错误?

c++ - 如何对齐 QTextEdit 文本

c++ - C++ Boost中有回收池结构吗?

c++ - 如何在 Eclipse CDT 中包含 Apple 'frameworks'

c++ - 程序在 C++ 中的 for 循环后结束

c++ - 当我可以将 RNG 传递给分布时,为什么要使用 variate_generator? (特别是 C++ 和 Boost)

c++ - 如何确定指针和动态数组 "C++ to Delphi"

c++ - 连分数

c++ - 带有 QPainter 的不优雅的椭圆