2013-11-28 4 views
0

У меня проблема с чтением целого числа из файла. Что касается моих знаний, это должно сработать. Можете ли вы сказать мне, что я сделал неправильно здесь?Не удается прочитать из файла

int fileCount = 0; 
    ifstream listFileStream (fileName); 

    if (listFileStream.is_open()) { 

      listFileStream >> fileCount; 
      cout << fileCount; 

    } 

Он печатает только 0, даже если первая строка файла 28.

+0

Попробуйте прочитать строку за раз. см. [здесь] (http://www.cplusplus.com/doc/tutorial/files/) –

+0

Если я изменяю тип переменной на строку, это дает это ... 'fileCount = "ÿþ2"' –

+2

@SankaD Я думаю, что вы у вас есть неожиданные символы в начале вашего файла. Может даже быть отметкой байтового заказа (BOM). – john

ответ

2

Вы всегда должны проверить, что вы читаете попытка была успешной:

if (listFileStream >> fileCount) { 
    process(fileCount); 
} 

Если чтение не Вы можете попытаться восстановить его или сообщить об ошибке. Вот один из способов вы можете попытаться восстановить: восстановить поток в хорошем состоянии и игнорируют первый символ:

listFileStream.clear(); 
listFileStream.ignore(); 

Без восстановления потока в хорошем состоянии, все попытки ввода будут игнорироваться. После удаления символа-нарушителя вы должны повторить чтение.

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