所以我正在研究我的项目,我遇到了一个问题。每当我尝试从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
谁能帮忙?
答案 0 :(得分:1)
使用operator >>
输入std::string
只会读取一个单词。
这意味着第一个输入将读取“BLADE”并在输入缓冲区中保留“W / S WIPER”,下一次读取将从那里开始。最终,数字字段的输入操作将尝试读取字母,并且无法读取。
之后,流处于错误状态,并且没有其他内容被读取,即使myfile.eof()
不正确(但myfile.fail()
是)。那里有一个无限循环。见Why is iostream::eof inside a loop condition considered wrong?