我想从我使用的流中读取一些数据std::getline.下面是一个使用的样本std::cin.
std::string line;
std::getline( std::cin, line );
Run Code Online (Sandbox Code Playgroud)
这是一个阻塞函数,即如果没有数据或行读取它阻止执行.
你知道在调用之前是否存在检查数据可用性的函数std::getline吗?我不想阻止.
如何检查流缓冲区是否满足成功调用的数据std::getline?
无论如何看起来像下面的代码
if( dataAvailableInStream() )
{
std::string line;
std::getline( std::cin, line );
}
Run Code Online (Sandbox Code Playgroud) 我理解cin.eof()测试流格式.在输入时,输入错误时不会到达字符结尾.我在MSV C++ 2010上对此进行了测试,并没有理解奇怪的结果.无论我给出什么输入,我都会收到程序中存在的格式错误消息.
#include <iostream>
using namespace std;
int main()
{
int i;
cin>> i;
if(!cin.eof())
{
cout<< "\n Format Error \n";
}
else
{
cout<< "\n Correct Input \n";
}
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
结果我预计:
i =的值
有人可以解释我哪里错了.谢谢.