Работа с файлами в С++. Чтение элементов одномерного массива из текстового файла

Страницы работы

23 страницы (Word-файл)

Фрагмент текста работы

  • Например, символ новой строки может быть преобразован при выводе в последовательность из двух символов: возврат каретки и переход на новую строку. В свою очередь при работе с бинарным потоком никакого преобразования символов не происходит. Текущая позиции или указатель потока (файла) – это место в потоке (файле), с которого будут выполняться операции доступа к компонентам потока.
  • В С++ все операции, связанные с файловыми потоками, определены в fstream.h. Поэтому в разделе директив необходимо указать #include <fstream>.
  • Каждый класс файловых потоков (ifstream, ofstream и fstream) содержит конструкторы, с помощью которых можно инициализировать объекты этих классов различными способами.
  • Если потоковый объект создается с использованием конструктора с параметрами, то поток будет связан с файлом (файл будет открыт). Вторым параметром конструктора является режим открытия файла. Если установленное по умолчанию значение не устраивает программиста, можно указать другое, составив его из битовых масок, определенных в классе ios.
  • Если потоковый объект создается с использованием конструктора без параметров, то поток не будет связан с файлом (файл не будет открыт). Открыть файл в этом случае можно с помощью метода open( ), имеющего такие же параметры, что и у конструктора с параметрами.
  • Для закрытия потока определен метод close(), но поскольку он неявно выполняется деструктором, явный вызов необходим только тогда, когда требуется закрыть поток раньше конца его области видимости.

5

  • Чтение и запись данных текстовых файлов:
    • операции >> и <<  ;
    • метод getline(char [] buf, int n);
    • функция getline(istream in, string str);
  • Считывание и запись в файл блоков данных:
    • istream &read(char *buf, streamsize num);
    • ostream &write(const char *buf, streamsize num);

  • При чтении или записи данных в текстовый файл можно использовать операции << и >>. Например, для чтения целочисленной переменной x из файлового потока in необходимо использовать оператор: in>>x; а для записи в выходной файловый поток out значения цело численной переменной x: out<<x.
  • Для чтения из файлового потока строк можно использовать операцию >>, но у нее есть недостаток – она вводит строку до первого пробела.
  • Для чтения из файлового потока строк, содержащих пробелы, нужно использовать или метод getline() или специальную функцию getline().
    • Метод getline() используется для ввода строк, которые являются массивами символов с завершающем символом ‘\0’. Метод getline() считывает из входного потока (n-1) символов или менее, если символ перевода строки встретился раньше, и записывает их в строковую переменную s. Символ перевода строки также считывается (удаляется) из входного потока. Вместо символа перевода строки в строковой переменной размещается завершающий 0.
  • Функция getline() используется для ввода строк, которые являются объектами класса string.
  • Функция read() считывает num байт данных из связанного с файлом потока в буфер buf. Функция write() записывает num байт данных в связанный с файлом поток из буфера buf. Тип streamsize является разновидностью целого типа. Он позволяет хранить самое большое количество байтов, которое может быть передано в процессе любой операции ввода/вывода.

7

Пример 1: Чтение элементов одномерного массива из текстового файла и запить в текстовый файл

Пример 1: Чтение элементов одномерного массива из текстового файла и запить в текстовый файл

Пример 2: Вывод на экран содержимого текстового файла

Пример 3: Вывод на экран содержимого текстового файла

Пример 4: Запить в текстовый файл элементов двумерного массива

Пример 4: Запить в текстовый файл элементов двумерного массива

Пример 5: Чтение из текстового файла элементов двумерного массива

Пример 5: Чтение из текстового файла элементов двумерного массива

Похожие материалы

Информация о работе