【问题标题】:Duplicate record from file input [duplicate]来自文件输入的重复记录[重复]
【发布时间】:2014-12-28 11:46:40
【问题描述】:

我在那边遇到了问题。当我使用下面的函数时,我得到了我议程中最后一个条目的副本(记录数组,“联系人”)。我该如何解决这个问题?对不起,如果我问了一个以前回答过的问题

void load(agenda a,int& r){
    r=0;
    contact c;
    fstream f;

    f.open("agenda.txt",ios::in);
    if(!f)
        cout<<"\nError!";
    else
        while(!f.eof()){
            f>>c.name;
            f>>c.number;
            strcpy(a[r].name,c.name);
            strcpy(a[r].number,c.number);
            r++;
        }
    f.close();
}

【问题讨论】:

标签: c++ arrays file eof records


【解决方案1】:

文件需要到达EOFeof()返回true。

如果在最后一个值之后有一个空格,您将无法到达EOF,直到下一次读取尝试。

您可以像这样检查每次读取是否成功:

if(!f>>value) break;

或迭代直到&gt;&gt; 操作符会像这样失败:

while(f>>c.name>>c.number){
   ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 2012-01-06
    • 2021-05-28
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多