从文本文件中逐行读取数据

时间:2015-02-10 04:31:04

标签: c++ text stream

文本文件的每一行都有名字,姓氏和薪水。有点像这样:

  

john doe 4000

     

bob miller 9000

我希望我的程序获取每行的名字,姓氏和薪水,并将它们分配给字符串(或整数)。到目前为止我试过这个:

while (inFile){

    inFile >> firstName;
    inFile >> lastName;
    inFile >> grossPay;

    cout << firstName << " " << lastName << " " << grossPay << endl;
}

当它输出名称和工资时,文本文件的最后一行由程序输出两次。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

在阅读完最后一行后,inFile仍处于有效状态。

只有当尝试阅读更多时,您的测试才会失败,但控件已经进入循环一段时间了。

您希望在阅读后测试

while ( inFile >> firstName >> lastName >> grossPay ){
//      ^^ Now the test happens AFTER reading...
    cout << firstName << " " << lastName << " " << grossPay << endl;
}