Ваша программа, вероятно, аварийно завершает работу, потому что вы написали этот код:
std::ostream_iterator<std::string> \
output_iterator(output_file[80], "\n");
... и output_file[80]
- это один элемент после конца массива. Вы объявили это как:
std::ofstream output_file[80];
Первый элемент этого массива - output_file[0]
, а последний элемент этого массива - output_file[79]
.
Есть и другие неправильные вещи
Как указывал @walnut, если ваш код действительно такой, как вы его опубликовали, то, похоже, он закрывает каждый файл сразу после его открытия, ничего не записывая в файл.
for (int i = 0; i < co; i++)
{
output_file[i].open(name + std::to_string(i) + ".h");
output_file[i].close(); // Leaving so soon?
}
Запись в файл Закрытый ofstream не создает программу sh, но устанавливает условие ошибки для ofstream (badbit). Так что для вас это будет тихая ошибка.
Чтобы исправить
Чтобы исправить вашу проблему, вам нужно будет записать в свой файл после того, как вы откроете его, но перед тем, как закрыть его.
Вам также нужно будет решить, в какой именно выходной файл вы хотите записать, и предоставить правильный индекс массива. Из вашего примера кода не совсем понятно, каково было ваше намерение. Вам нужно решить, в какой файл (ы) (из 80, которые вы открыли) вы хотите записать каждый элемент вашего rowname
вектора.
std::copy
в том виде, как вы написали, он напишет все строки в векторе rowname
в одном потоке. Если вы намеревались записать каждый элемент в отдельный файл, то вам придется настроить его существенно по-разному.
Что-то еще в следующем виде:
#include <fstream>
#include <vector>
#include <string>
int main() {
std::vector<std::string> rowname = { "alpha", "bravo", "charlie" }; // example data
std::string name = "example"; // base filename
for (size_t i = 0; i < rowname.size(); ++i) {
std::ofstream output_file;
std::string filename = name + std::to_string(i) + ".h"; // e.g.: "example0.h"
output_file.open(filename);
output_file << rowname[i]; // write the string to the file
output_file.close(); // if you want
}
}
Это записывает текст alpha
в example0.h , bravo
в example1.h и charlie
в example2.h .