Как правильно вывести результат работы программы в текстовый файл

Дали задание,нужно сделать прогу,которая делает работу с текстом,но не в этом суть,также нужно вывести 3 массива из программы в 3 отдельных файла,как это грамотно сделать?В обычные текстовые файлы,желательно простым методом.Плюс,лучше,чтобы файл сам создавался,а имя и путь был прописан в коде


Ответы (1 шт):

Автор решения: Smoliarick

В файл можно записать через потоковый ввод/вывод в файл (fstream).

Пример записи в файл:

  • Создаем вектор из векторов для примера, там указаны строки для записи
  • Далее создаем index, который будет указывать номер файла
  • Проходим по созданному вектору из векторов и записываем каждый вектор в отдельный файл, для вас в данном случае интересна будет следующая часть:
std::ofstream output("output" + std::to_string(index) + ".txt", std::ios::app);
for (const std::string& line : item) {
    output << line << std::endl;
}
output.close();

Здесь:

  • std::ofstream(output("output" + std::to_string(index) + ".txt") - создаем поток для записи в файл с именем "output(заданный index).txt"
  • std::ios::app - указывает, что мы дозаписываем в конец файла, а не создаем новый при записи
  • output << line << std::endl; - записываем в файл строку из вектора, в котором сейчас находимся и добавляем в конце перенос строки
  • output.close(); закрываем поток, чтобы при переходе на следующий вектор мы создали новый поток для другого файла

Полный пример программы:

Создает 3 файла (output1.txt, output2.txt, output3.txt), в который лежат строки из (v[0], v[1], v[2]) соответственно. Файл создается автоматически.

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

int main() {
    std::vector<std::vector<std::string>> v = {
        { "V1Line1", "V1Line2", "V1Line3" },
        { "V2Line1", "V2Line2", "V2Line3" },
        { "V3Line1", "V3Line2", "V3Line3" }
    };

    int index = 0;
    for (const std::vector<std::string> item : v) {
        std::ofstream output("output" + std::to_string(index) + ".txt", std::ios::app);
        for (const std::string& line : item) {
            output << line << std::endl;
        }
        output.close();
        index++;
    }
    return 0;
}
→ Ссылка