最近在做CCF的题,然后如下代码让我很奇怪
string s;
while(cin>>s){
};
这个段代码在自己的IDE上输入就会存在一个问题,不论输入什么,字符串t都能顺利读入,cin>>s无法成为false也就是无法退出循环。但是放在OJ上测试却可以成功的结束,得到了满分。
原因如下:
输入结束需要让cin>>t变成false,如果在自己的电脑上windows需要在输入数据结束后再输入一个Ctrl+Z(EOF字符)来告诉输入结束。而再OJ上并不是通过键盘输入实现的,而是通过读入数据文件实现的,而且OJ平台默认再数据后加上EOF字符,所以这段代码再自己电脑上需要自己输入EOF结束,而OJ上却会自动结束,顺利通过。
版权声明:本文为优快云博主「SDUHXP」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/weixin_41053564/article/details/81449077
博客详细解释了在不同环境下,C++代码中使用cin读取字符串时如何判断输入结束的问题。在本地IDE中,需要输入Ctrl+Z来发送EOF结束输入,而在在线评测系统(OJ)上,由于直接读取数据文件,通常已包含EOF,因此能够正确结束。此问题关乎到输入流的处理和不同平台的交互差异。
6569

被折叠的 条评论
为什么被折叠?



