1

我必须从文件中读取四个数据元素,即学生姓名、父亲姓名、卷号和年龄。我使用 inps 作为输入文件流,使用 outs 作为输出数据流。我的输入文件中有 10 个数据集。但是这个程序只在输出文件中写入了第一个数据集,而忽略了其余的 9 个数据集。请给这个问题一些建议。

string line;
int data;

while (inps) {

    getline(inps,line);    //read from file and put in line
    s1.setName(line);
    getline(inps,line);
    s1.setFatherName(line);
    inps>>data;
    s1.setRollNo(data);
    inps>>data;
    s1.setAge(data);

    outs.open("output",ios::app);
    outs<<"Student name: "<<s1.getName()<<endl<<"Father’s name: "
        <<s1.getFatherName()<<endl;
    outs<<"Roll number: "<<s1.getRollNo()<<endl<<"Age: "
        <<s1.getAge()<<endl<<endl;

    outs<<"============================================================="
        <<endl<<endl;
}

inps.close();
//write in output file
outs.close();
4

2 回答 2

1

该程序的另一个问题是,在进入循环时,它检查是否 inps==0 并且仍然未初始化!所以,我们必须写 for(getline(inps,line);line!="";getline(inps,line)) 而不是 while(inps)

然后删除第一行代码,一切都很好。

于 2013-08-06T11:30:40.847 回答
1

不要不断地重新打开相同的 ofstream:

  1. 根本就是傻
  2. 当然不是没有先正确关闭它
于 2013-08-06T07:30:28.957 回答