Есть несколько проблем с вашим кодом. Для начала, вы
не показывайте нам объявление arrayStorage
, поэтому мы должны
угадай это: я угадаю int arrayStorage[N]
, (где N
константа). После этого для чтения:
-
Никогда не правильно использовать `istream :: eof` в цикле. это
функция имеет значение только после сбоя ввода; до
что он может вернуть `false`, когда нет ничего другого
читать, и `true`, хотя последний ввод прошел успешно.
Вы интересуетесь функцией `fail`, а это то, что
вызывается косвенно всякий раз, когда `istream` используется в
контекст, который требует `bool`.
- `getline` требует` char [] `и читает символы, а не
ИНТ-х.
Если все файлы содержат эти int, стандартная идиома
для чтения их будет:
for (int i = 0; in && i < N; ++ i) {
in >> arrayStorage[i];
}
На практике вы, вероятно, захотите немного больше: это ошибка, если
файл не содержит достаточно int? если он содержит слишком много?
И вы захотите проверить после сбоя, что сбой
был из-за конца файла, а не какой-то случайной тарабарщины в
файл. Или, может быть, вы хотите (или нужно) проверить формат больше,
обеспечение того, чтобы в строке никогда не было более одного целого.
Ваша функция вывода выглядит почти нормально; последний индекс должен быть N
, а не sizeof arrayStorage
(который возвращает количество байтов в массиве, а не количество элементов). Позже, вниз по течению,
Вы хотите проверить, что не было ошибок после
закрытие файла; нет ничего более расстраивающего, чем
программа, которая говорит, что это удалось, когда на самом деле только часть
данные попали на диск.