| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1657 人关注过本帖
标题:关于文件尾条件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
等 级:版主
威 望:528
帖 子:9029
专家分:54050
注 册: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
快速回复:关于文件尾条件EOF
数据加载中...
 
   



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

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