Библиотека файлового ввода-вывода C++ - <fstream>

В C++, <fstream>— это класс в стандартной библиотеке для операций файлового ввода-вывода. Он предоставляет удобный способ чтения и записи файлов.

fstreamДаiostream— часть библиотеки, поддерживающая чтение и запись текстовых и бинарных файлов.

fstream— это классiostream— класс в библиотеке, который наследуется отistreamиostream, что означает, что его можно использовать как для ввода, так и для вывода.

Синтаксис

fstreamБазовый синтаксис выглядит следующим образом:

#include <fstream>

int main() {
    std::fstream file; // Создать объект fstream
    file.open("filename", mode); // Открыть файл
    // Выполнить файловые операции
    file.close(); // Закрыть файл
    return 0;
}

гдеfilename— это имя файла,mode— это режим открытия файлов, распространённые режимы включают:

  • std::ios::in: Открывает файл в режиме ввода.
  • std::ios::out: Открывает файл в режиме вывода.
  • std::ios::app: Открывает файл в режиме добавления.
  • std::ios::ate: Открывает файл и устанавливает позицию в конце файла.
  • std::ios::trunc: открывает файл и усекает его, т. е. очищает содержимое файла.

Пример

Запись в текстовый файл:

Пример

#include <fstream>
#include <iostream>

int main() {
    std::fstream file;
    file.open("example.txt", std::ios::out); // Открыть файл в режиме вывода

    if (!file) {
        std::cerr << "Не удалось открыть файл!" << std::endl;
        return 1; // Не удалось открыть файл
    }

    file << "Привет, мир!" << std::endl; // Записать текст
    file.close(); // Закрыть файл

    return 0;
}

Создайте файл с именем в текущем каталогеexample.txtфайл, содержимое файла:

Hello, World!

Прочитать текстовый файл

Пример

#include <fstream>
#include <iostream>
#include <string>

int main() {
    std::fstream file;
    file.open("example.txt", std::ios::in); // Открыть файл в режиме ввода

    if (!file) {
        std::cerr << "Не удалось открыть файл!" << std::endl;
        return 1; // Не удалось открыть файл
    }

    std::string line;
    while (getline(file, line)) { // Читать построчно
        std::cout << line << std::endl;
    }

    file.close(); // Закрыть файл

    return 0;
}

ifexample.txtФайл содержит следующее содержимое:

Hello, World!
This is a test file.

затем программа выведет:

Hello, World!
This is a test file.

Добавить в файл:

Пример

#include <fstream>
#include <iostream>

int main() {
    std::fstream file;
    file.open("example.txt", std::ios::app); // Открыть файл в режиме добавления

    if (!file) {
        std::cerr << "Не удалось открыть файл!" << std::endl;
        return 1; // Не удалось открыть файл
    }

    file << "Добавление этой строки в файл." << std::endl; // Добавить текст
    file.close(); // Закрыть файл

    return 0;
}

example.txtИзначально файл содержал следующее содержимое:

Hello, World!
This is a test file.

После выполнения вышеуказанной программы содержимое файла станет:

Hello, World!
This is a test file.
Appending this line to the file.
Другие расширения