#php #c
#php #c
Вопрос:
Я должен создавать разные файлы данных в цикле. Есть три типа файлов, которые я хочу сгенерировать следующим образом:
typeAd.txt,
typeBd.txt и
typeCd.txt
Для этого я хочу реализовать функцию, которая принимает порядковый номер и строку в качестве параметров.
Что-то похожее на это:
void make_file(paarvec data, int count){
int size = data.size();
char filename[160];
sprintf(filename, "named.txt", count);
ofstream out_data(filename);
for(int n=0; n<size; n){
out_data << data[n].first << "t" << data[n].second << endl;
}
out_data.close();
}
Но есть ли способ, которым я также могу изменить «имя» файла с помощью аргумента. Чтобы я мог писать:
std::string timestring = "timedata";
std::string timestring = "pathdata";
...
for(int i=0; i<N; i){
...
make_file(time_data, timestring ,count);
make_file(frac_data, fracstring ,count);
make_file(path_data, pathstring ,count);
}
Комментарии:
1. Какой закон запрещает вам просто добавлять другой параметр в
make_file()
?2. возможно, я сделал что-то не так, но это не сработало 🙁
3. «Привет, автоматический ремонт Чака? Моя машина не работает, вы можете это исправить? » — вы ожидаете получить осмысленный ответ на это?
4. На самом деле я получаю содержательный ответ умного и дружелюбного Славы ниже… Большое спасибо Славе.
Ответ №1:
Просто измените свою функцию на:
void make_file(paarvec data, const std::string amp;name, int count){
int size = data.size();
char filename[160];
snprintf(filename, sizeof(filename), "%sd.txt", name.c_str(), count);
...
Примечание, которое я изменил sprintf
на snprintf
— это хорошая привычка предотвращать неприятные сюрпризы в вашем коде, такие как переполнение буфера.