对于 C++ 应用程序,如何以编程方式强制标准输入上的文件结尾 (EOF)?
问问题
11094 次
3 回答
13
如果您在类 Unix 系统的终端上,请点击Ctrl-D
. 在 Windows 中,Ctrl-Z
.
编辑:看到“以编程方式”执行此操作的愿望后,我建议尝试fclose(stdin)
. 如果这还不够好,一个更疯狂的想法可能是使用std::cin.rdbuf()
将流设置为引用真正的标准输入以外的东西,然后对该流执行您想要的操作。但这开始闻起来很糟糕,就像您在与计算机作斗争一样,所以我想更多地了解真正的目标是什么。
于 2011-01-15T20:54:07.547 回答
6
实际上,你不能。只要您可以从标准输入读取数据,就没有到达 EOF,实际上您永远无法到达它。但是,您可以关闭它stdin
本身。要关闭它,请执行以下操作:
fclose(stdin);
在此之后,您将无法从中读取数据stdin
。
于 2011-01-15T20:55:01.217 回答
1
专门为此创建的每个流都有一个不错的小功能。
它的语法类似于:
stream.setstate(stream.flags)
因此,在您的代码中,您可以有一个简单的条件来触发以下内容:
std::cin.setstate(std::cin.eofbit);
这方面的文档非常稀少,但在cppreference.com和cplusplus.com上有一些。
于 2015-07-21T17:13:09.693 回答