标题:关于文件尾条件EOF
只看楼主
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
结帖率:90.38%
已结贴  问题点数:20 回复次数:4 
关于文件尾条件EOF
以下代码当我输入asd和ctrl+z和回车后。输出结果为1234。为什么会多了4呢?
当读取的EOF的时候应当结束循环才对,为什么还会输出4呢?
程序代码:
#include<iostream>
int main(){
    using namespace std;
    int i;
    i=0;
    char ch;
    cin.get(ch);
    while(!cin.fail()){
        i++;
        cout<<i;
        cin.get(ch);
    }
    return 0;
}
搜索更多相关主题的帖子: cin 条件 EOF int 文件 
2020-08-26 03:37
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
这个与C++无关,是操作系统的行为。
你应该将 Ctrl^Z 另起一行输入
2020-08-26 08:11
Link2Points
Rank: 4
等 级:业余侠客
威 望:6
帖 子:46
专家分:286
注 册:2020-8-17
得分:10 
cin.get()从输入缓冲区读取单个字符时不忽略分隔符
建议是加ignore

摸鱼中ˋ( ° ▽、° )
2020-08-26 11:33
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
得分:0 
以下是引用Link2Points在2020-8-26 11:33:22的发言:

cin.get()从输入缓冲区读取单个字符时不忽略分隔符
建议是加ignore

这样确实可行,但是按照上面的输入,我不明白输入的时候是在哪个位置产生了分隔符?这个分隔符是指换行符吗?

[此贴子已经被作者于2020-8-26 12:47编辑过]

2020-08-26 12:33
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
得分:0 
以下是引用rjsp在2020-8-26 08:11:08的发言:

这个与C++无关,是操作系统的行为。
你应该将 Ctrl^Z 另起一行输入

另起一行输入也是相同的结果,一共读取了4个字符,无法让它只读取3个字符。
2020-08-26 12:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-502958-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017873 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved