首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用读取文件

使用读取文件
EN

Stack Overflow用户
提问于 2014-04-29 02:58:09
回答 1查看 444关注 0票数 1

我对getline有点问题。我想逐行读取,但只有>>读取正常,而getline不读取。这是我的代码:

代码语言:javascript
代码运行次数:0
运行
复制
int studentSize;
string programme;
filein >> studentSize;
filein >> programme;
if (programme == "Physics")
{
    for(int i=0; i < studentSize; i++)
    {
        getline (filein,namephys, '*');
        filein >> idphys;
        getline (filein,course, '*');
        filein >> mark;

        phys.push_back(new physics());
        phys[i]->setNameId(namephys, idphys);
        phys[i]->addCourse(course, mark);
        sRecord[idphys] = phys[i];
    }
}

这是我的档案:

代码语言:javascript
代码运行次数:0
运行
复制
2
Physics
Mark Dale* 
7961050 
Quantum Programming* 
99

Mark和量子编程的输出不能很好地工作。似乎整条线都在他们面前。谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-29 03:32:14

流在任何时候都可能失败&您的循环无法对它作出反应。你应该这样做:

代码语言:javascript
代码运行次数:0
运行
复制
if( programme == "Physics" )
{
    filein.ignore();

    // a more strict version is : (#include <limits>)
    //filein.ignore( numeric_limits<streamsize>::max(), '\n' );

    while( getline(filein, namephys, '*') &&
           filein >> idphys &&
           filein.ignore() && //** ignore the trailing newline (operator>> doesn't read it)
           getline(filein, course, '*') &&
           filein >> mark &&
           filein.ignore() )
    {
        /* do something */
    }
}

当流状态变得糟糕时,此循环立即退出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23354646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档