从文件c ++输入时出现空白屏幕

时间:2015-12-24 23:20:20

标签: c++ console-application

所以我正在研究我的项目,我遇到了一个问题。每当我尝试从c ++中的文件输入数据时,我都会出现空白屏幕

代码:

int main() {

string make[1000],model[1000],partName[1000];
int partNo[1000],quantity[1000];
double price[1000];
int i = 0;

ifstream myFile("file.txt");
while (!myFile.eof())
{
    myFile >> make[i] >>model[i]>> partNo[i] >>quantity[i]>> price[i]>>partName[i];
    i++;
}
for (int j = 0;j < i;j++)
    cout << make[j] <<"\t"<<model[j]<<"\t"<< partNo[j] <<"\t"<<quantity[j]<<"\t"<< price[j]<<"\t"<<partName[j]<<endl;
    return 0;

}

来自数据文件的示例:

Pajero  NA1H25    1     26      3.65     BLADE W/S WIPER
Pajero  NA1S25    2     12      65.7     OIL SEAL-T/M CASE
Pajero  NA3H25    3     20      14.6     OIL SEAL-DIST
Pajero  NA3H25    4     26     10.95     DISC-CLUTCH
Pajero  NC3V25    5     13      14.6     FUSIBLE LINK
Pajero  ND0000    6     12      3.65     WEATHERSHIELD PKGE-L
Pajero  ND1V45    7     10     32.85     SEAL & BOOT KIT
Pajero  ND1Z45    8     24     62.05     FUSIBLE LINK
Pajero  ND1Z45    9      9     18.25     COVER-HANDLE LH
Pajero  ND1Z45   10      6      3.65     PIPE ASSY-OIL
谁能帮忙?

1 个答案:

答案 0 :(得分:1)

使用operator >>输入std::string只会读取一个单词。

这意味着第一个输入将读取“BLADE”并在输入缓冲区中保留“W / S WIPER”,下一次读取将从那里开始。最终,数字字段的输入操作将尝试读取字母,并且无法读取。

之后,流处于错误状态,并且没有其他内容被读取,即使myfile.eof()不正确(但myfile.fail()是)。那里有一个无限循环。见Why is iostream::eof inside a loop condition considered wrong?