注册 登录
编程论坛 C++教室

关于文件尾条件EOF

hffjhhh 发布于 2020-08-26 03:37, 1816 次点击
以下代码当我输入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;
}
4 回复
#2
rjsp2020-08-26 08:11
这个与C++无关,是操作系统的行为。
你应该将 Ctrl^Z 另起一行输入
#3
Link2Points2020-08-26 11:33
cin.get()从输入缓冲区读取单个字符时不忽略分隔符
建议是加ignore
只有本站会员才能查看附件,请 登录
#4
hffjhhh2020-08-26 12:33
以下是引用Link2Points在2020-8-26 11:33:22的发言:

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

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

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

#5
hffjhhh2020-08-26 12:45
以下是引用rjsp在2020-8-26 08:11:08的发言:

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

另起一行输入也是相同的结果,一共读取了4个字符,无法让它只读取3个字符。
1