Пожалуйста, скажите мне, что я делаю неправильно здесь. Что я хочу сделать, так это:
1. Имея текстовый файл с четырьмя числами, и каждое из этих чисел имеет 15 цифр:
std::ifstream file("numbers.txt",std::ios::binary);
Я пытаюсь прочитать эти числа в свой массив:
char num[4][15];
И я думаю, что делаю следующее: пока вы не достигнете конца файлов, запишите каждую строку (максимум 15 символов, заканчивающихся на '\n') в num[lines]. Но это несколько не работает. Во-первых, он правильно читает только первое число, остальное - это просто "" (пустая строка), а во-вторых, похоже, что file.eof() тоже работает неправильно. В текстовом файле, который я привожу под этим кодом, я достиг строк, равных 156. Что происходит?
for (unsigned lines = 0; !file.eof(); ++lines)
{
file.getline(num[lines],15,'\n');
}
Итак, вся «рутина» выглядит так:
int main()
{
std::ifstream file("numbers.txt",std::ios::binary);
char numbers[4][15];
for (unsigned lines = 0; !file.eof(); ++lines)
{
file.getline(numbers[lines],15,'\n');// sizeof(numbers[0])
}
}
Это содержимое моего текстового файла:
111111111111111
222222222222222
333333333333333
444444444444444
P.S.
Я использую VS2010 sp1
getline
работает неправильно? Невероятный! - person   schedule 08.06.2011