我正在尝试编写一个暂停我的控制台的简单函数。
很简单,但我希望它能在两种情况下都有效:当流为空时,只需使用std::cin.get();
或std::getchar();
;当流不为空时,如果您在程序过程中输入了任何内容,则必须使用std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); std::cin.get();
;
所以,我想写一个函数,如果可能的话,用一个简单的if
语句来处理它们。不幸的是,我对C ++ streams
非常不满意。我希望在该领域有更多知识的人可以帮助或指出我错过的明显功能。谢谢!
#include <iostream>
#include <limits>
void pause()
{
if (std::cin.eof()) //I don't know what I'm doing here. Don't judge, lol
{
std::cin.get();
}
else
{
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin.get();
}
}
int main()
{
int i = 0;
std::cin >> i; //if I comment this line, I would have to press enter twice
std::cout << "Hello world!"; //to close the console
pause();
}
答案 0 :(得分:0)
void pause()
{
if (std::cin.rdbuf()->in_avail > 0)
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin.get();
}