Чтение и запись файла построчно на C++

C++C++Beginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии вы научитесь считывать и записывать файл построчно с использованием языка программирования C++. Вы создадите файл, запишите в него данные, а затем считайте его содержимое по одной строке.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp(("C++")) -.-> cpp/ControlFlowGroup(["Control Flow"]) cpp(("C++")) -.-> cpp/OOPGroup(["OOP"]) cpp/ControlFlowGroup -.-> cpp/while_loop("While Loop") cpp/OOPGroup -.-> cpp/classes_objects("Classes/Objects") cpp/OOPGroup -.-> cpp/class_methods("Class Methods") cpp/IOandFileHandlingGroup -.-> cpp/output("Output") cpp/IOandFileHandlingGroup -.-> cpp/user_input("User Input") cpp/IOandFileHandlingGroup -.-> cpp/files("Files") subgraph Lab Skills cpp/while_loop -.-> lab-96213{{"Чтение и запись файла построчно на C++"}} cpp/classes_objects -.-> lab-96213{{"Чтение и запись файла построчно на C++"}} cpp/class_methods -.-> lab-96213{{"Чтение и запись файла построчно на C++"}} cpp/output -.-> lab-96213{{"Чтение и запись файла построчно на C++"}} cpp/user_input -.-> lab-96213{{"Чтение и запись файла построчно на C++"}} cpp/files -.-> lab-96213{{"Чтение и запись файла построчно на C++"}} end

Создание и открытие файла

Создайте файл на C++ с именем file_io.cpp в директории ~/project. В этом шаге вы создадите и откроете файл с именем example.txt.

#include <fstream>

int main() {
    // Создание и открытие файла
    std::ofstream ofs;
    ofs.open("example.txt", std::ofstream::out | std::ofstream::trunc);
    ofs.close();
    return 0;
}

Пояснение:

  • ofstream - это класс для записи в файлы.
  • ofs - объект класса ofstream.
  • Метод open() используется для создания и открытия файла.
  • В методе open() первый аргумент - это имя файла, который нужно создать, а второй аргумент задает режим, в котором файл должен быть открыт. Здесь out задает, что файл открыт для записи, а trunc задает, что файл должен быть очищен, если он уже существует.

Запись в файл

В этом шаге вы запишете данные в файл example.txt.

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

int main() {
    std::ofstream ofs;
    ofs.open("example.txt", std::ofstream::out | std::ofstream::trunc);
    if (ofs.is_open()) {
        std::cout << "Введите текст для записи в файл (Введите пустую строку для выхода):" << std::endl;
        std::string line;
        do {
            std::getline(std::cin, line);
            if (line.length()) {
                ofs << line << std::endl;
            }
        } while (line.length());
        ofs.close();
    } else {
        std::cerr << "Ошибка при открытии файла" << std::endl;
    }
    return 0;
}

Пояснение:

  • std::cout используется для отображения сообщения на консоли, запрашивающего у пользователя ввести текст для записи в файл.
  • std::getline() используется для чтения ввода пользователя построчно и сохранения его в переменной line.
  • if (line.length()) используется для проверки, ввел ли пользователь какой-либо текст или нет. Если пользователь не ввел никакого текста, то цикл будет завершен.
  • ofs << line << std::endl; используется для записи ввода пользователя в файл, за которым следует символ новой строки.
  • std::cerr используется для отображения сообщения об ошибке на консоли, если файл не может быть открыт.

Для запуска этой программы перейдите в директорию ~/project и выполните следующую команду:

g++ file_io.cpp -o file_io && ./file_io

Эта программа будет запрашивать у пользователя ввод текста для записи в файл и затем записывать введенные данные пользователя в файл.

Чтение из файла

В этом шаге вы прочитаете содержимое файла example.txt.

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

int main() {
    std::ifstream ifs;
    ifs.open("example.txt");
    if (ifs.is_open()) {
        std::cout << "Содержимое файла:" << std::endl;
        std::string line;
        while (std::getline(ifs, line)) {
            std::cout << line << std::endl;
        }
        ifs.close();
    } else {
        std::cerr << "Ошибка при открытии файла" << std::endl;
    }
    return 0;
}

Пояснение:

  • std::ifstream - это класс для чтения из файлов.
  • ifs - объект класса ifstream.
  • Метод open() используется для открытия существующего файла.
  • В методе open() аргументом является имя файла, который нужно открыть.
  • std::cout используется для отображения сообщения на консоли, указывающего, что выводится содержимое файла.
  • std::getline() используется для чтения содержимого файла построчно и сохранения его в переменной line.
  • std::cout << line << std::endl; используется для отображения содержимого файла построчно на консоли.

Для запуска этой программы перейдите в директорию ~/project и выполните следующую команду:

g++ file_io.cpp -o file_io && ./file_io

Эта программа будет отображать содержимое файла example.txt на консоли.

Резюме

В этом практическом занятии вы узнали, как создавать, записывать в и читать из файла с использованием языка программирования C++. Вы узнали, как использовать классы ofstream и ifstream для записи в и чтения из файлов соответственно. Также вы узнали, как использовать метод open() для создания и открытия файла, а метод getline() для чтения содержимого файла построчно.