读取 cin 直到 EOF

Posted

技术标签:

【中文标题】读取 cin 直到 EOF【英文标题】:Read cin till EOF 【发布时间】:2016-04-15 13:38:54 【问题描述】:

我正在为this answer 编写一个示例,我注意到http://ideone.com 可以让我从cin 读到EOF,但Visual Studio 2015 不会。

例如,给定程序:

string i;

while(cin >> i) cout << i << endl;

我可以给出意见:

Lorem Ipsum

而http://ideone.com 将终止:http://ideone.com/22uNOr

Visual Studio 2015 将继续等待输入,但是直到我按下 Ctrl + Z and 点击 Enter

这是 gcc/Visual Studio 的区别还是 http://ideone.com 正在做的事情?

【问题讨论】:

这是一个理想的事情。它将输入通过管道传输到您的程序,它不会以交互方式输入。 (交互式控制台如何知道不会有更多输入?) @molbdnilo 这就是我所怀疑的......我只是不确定 gcc 是否会让我提取到 cin 的末尾,而且由于我在本地没有可用的 gcc,我想我会问。你能把它写下来作为答案吗? @JonathanMee 顺便说一句,coliru 也一样。 @πάνταῥεῖ 我想是这样,但至少对于coliru.stacked-crooked.com,我自己在做管道。没有迹象表明ideone.com 如何接收我在“输入”文本框中输入的字符串。 @MartjinPieters 他们在烧 ideone 标签吗?因为如果不是,它似乎真的在这个问题中占有一席之地? 【参考方案1】:

在http://ideone.com 上,您可以在“输入”选项卡上提供输入。输入到此框中的任何内容都将输入到 cin,并附加一个 eof 字符。

例如,如果你这样做:

while (cin.get() != decltype(cin)::traits_type::eof());

在您的本地计算机上,直到您按 Ctrl + z 并按 Enter 后才会返回,但在 http://ideone.com 上,它将始终解析输入到“输入”选项卡中的所有内容后返回。

【讨论】:

以上是关于读取 cin 直到 EOF的主要内容,如果未能解决你的问题,请参考以下文章

在java中读取二进制文件,直到特定的“%% EOF”标记?

使用 cin::fail() 从标准输入进行无限循环读取

如何使用 cin 将整数从控制台读取到向量中

检查 string::getline 中的 eof

如何阅读直到 EOF 并打印输入的偶数/奇数?

Python中“虽然不是EOF”的完美对应物是啥