| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 482 人关注过本帖
标题:关于C++的流有点问题
只看楼主 加入收藏
w470913537k
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2012-10-29
结帖率:77.78%
收藏
已结贴  问题点数:10 回复次数:5 
关于C++的流有点问题
#include <iostream>

using namespace std;

int main ()
{
    double dval;
    istream& get (istream &in);
    get(cin);
    cin>>dval;
    cout<<dval<<endl;
    return 0;
}

istream& get (istream &in)
{
    int ival;
    while (in>>ival, !in.eof())
    {
        if (in.bad())
            throw runtime_error("流出现问题");
        if (in.fail())
        {
            cerr<<"数据有误,清重试";
            in.clear(istream::failbit);
            in.ignore(200,' ');
            continue;
        }
        cout<<ival<<" ";
    }
    in.clear ();

    return in;
}

这是我写的C++primer这本书里的一个小程序,稍微做了改动,关于流方面,我输入的时候打了ssdf这些字符进去以后, if (in.fail())指出了失败的io操作,然后输出数据有误,请重试,在此之后不是进行了流fail位的重置吗,应该这样是可以继续输入的吧,可是这样就进入死循环下去了,似乎流没有重置一样。还有那个ignore函数,我不太理解是什么意思,如果按照这上面写的这样,不是永远都无法跳出while的循环了吗?求大神指点迷津
搜索更多相关主题的帖子: namespace continue include double 
2013-04-30 09:49
w470913537k
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2012-10-29
收藏
得分:0 
很郁闷,我在这个论坛问的问题为什么从来都没有人给我解答呢。。。为什么为什么
2013-04-30 15:24
w470913537k
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2012-10-29
收藏
得分:0 
求解答啊
2013-04-30 15:33
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:4 
我输入ssdf,结果是数据有误,清重试";还是无限循环。

Maybe
2013-04-30 18:11
w470913537k
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2012-10-29
收藏
得分:0 
回复 4楼 邓士林
是啊。。。我也是这样。。后来在C++吧得到了解答。。那个重置只是把标记位设置为good,并没有清除缓存的。。看样子这个论坛好像是真的没人了。
2013-05-01 08:22
天使梦魔
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
收藏
得分:4 
while (in>>ival, !in.eof())
那个逗号是什么意思,是想用与运算符&&还是或运算符||
如果你想遵循这个意思就用逻辑或

continue改成break
你没有跳出当前循环,也没有跳到重新输入的地方,当然一直循环下去。
break可以直接跳出循环
2013-05-01 10:00
快速回复:关于C++的流有点问题
数据加载中...
 
   



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

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