读取 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的主要内容,如果未能解决你的问题,请参考以下文章