2015-12-24 3 views
-1

Так что я работаю над своим проектом и сталкиваюсь с проблемой. Каждый раз, когда я пытаюсь ввести данные из файла в C++ я получил пустой экранПустой экран при вводе из файла 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

Вход с operator >> в std::string будет читать только одно слово.

Это означает, что первый вход будет читать «BLADE» и оставить «W/S WIPER» во входном буфере, после чего начнется следующее считывание. В конце концов, операция ввода для числового поля будет пытаться читать буквы и не читать.

После этого поток находится в плохом состоянии, и ничего не читается, хотя myfile.eof() не соответствует действительности (но myfile.fail() есть). Там у вас бесконечный цикл. См. Why is iostream::eof inside a loop condition considered wrong?

+0

ok есть ли способ, которым я могу заставить его прочитать все слово, или я должен удалить пробелы? – N9ne

+0

Вы можете прочитать всю строку в одной строке с помощью 'std :: getline', а затем проанализировать эту строку в переменных. Или прочитайте первые 5 полей так, как вы делаете сейчас, а затем используйте 'getline' для последней части. –

+0

Хорошо, спасибо за помощь :) – N9ne

Смежные вопросы