首页 新闻 搜索 专区 学院

新手问路:in.get()应该放while(){}里边还是外边?代码如下

0
悬赏园豆:20 [已解决问题] 解决于 2016-07-28 12:43
void A::upwords()
{
    char ch;
    while (!i.eof())//在stack overflow 上说用eof()不好,why?
    {
        i.get(ch);
        if (ch=='I')
        {
            i.get(ch);
            if (ch == 'S')
            {
                a += 1;
                std::cout << a;
                std::cout<< '\t' << ch << std::endl;
            }
        }
    }i.close();
}

和下面这个

void A::upwords()
{
    char ch;
    i.get(ch);
    while (!i.eof())
    {
        if (ch=='I')
        {
            i.get(ch);
            if (ch == 'S')
            {
                a += 1;
                cout << a;
                cout<< '\t' << ch << std::endl;
            }
        }
    i.get(ch);
    }
    i.close();
}

可是之前下面这个为什么运行不了?

顺便还问一个:

为甚吗while()里边用eof()不好?

爱是用心码不要说话的主页 爱是用心码不要说话 | 初学一级 | 园豆:154
提问于:2016-05-16 19:12
< >
分享
最佳答案
0

.eof() 是检测状态位的,有可能会导致最后读入数据多了,建议使用判定get()的返回是否为EOF

至于放里,放外,就看你的in是什么数据了,

下面一段,可能出现,第一次get()就结束了,所以没有任何运行。

不是太明白你的代码里面i 的输入流是从哪里来的,所以没法判定其他的

收获园豆:20
天蝎鱼 | 菜鸟二级 |园豆:222 | 2016-06-23 10:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册