Создание текстового файла с отметкой времени в заголовке

Я пытаюсь написать программу, которая выводит много данных в отдельных текстовых файлах. Я хочу, чтобы заголовок каждого файла был Poker_Log_timestamp_datestamp.txt
Тем не менее, он не создает файл и не выдает никаких ошибок!

Вот код:

#include <fstream>
#include <iostream>
#include <ctime>
#include <string>
using namespace std;

int main(){
char sdate[9];
char stime[9];
fstream log;
_strdate_s(sdate);
_strtime_s(stime);
string filename = "Poker_Log_";
filename.append(stime);
filename.append("_");
filename.append(sdate);
filename.append(".txt");
cout<<"Filename == "<<filename<<endl;
log.open(filename.c_str());
log<<"\n\nHuman won the tournament.\n";
log.close();
system("Pause");
}

Как мне сделать эту работу?
Еще одна вещь: если я закомментирую filename.append(stime) а также filename.append(sdate)работает нормально.

РЕШЕНО: D В имени файла не должно быть косой черты или двоеточия, поэтому я заменил их обеими черточками. Вот рабочий код:

#include <fstream>
#include <iostream>
#include <ctime>
#include <string>
#include <cstdio>

using namespace std;

int main(){
char sdate[9];
char stime[9];
ofstream log;
_strdate_s(sdate);
_strtime_s(stime);
string filename = "Poker_Log_";
filename.append(stime);
filename.append("_");
filename.append(sdate);
filename.append(".txt");
for(int i = 0; i<filename.length(); ++i){
if (filename[i] == '/' || filename[i] == ':')
filename[i] = '-';
}
log.open(filename.c_str());
if (log.fail())
perror(filename.c_str());

log<<"\n\nHuman won the tournament.\n";
log.close();
system("Pause");
}

2

Решение

Строки даты и времени могут содержать символы (например, двоеточия), которые могут быть недопустимыми символами для вашей файловой системы.

3

Другие решения

Используйте следующее:

   log.open(filename.c_str());

open метод требует char *, a.k.a. строка в стиле C, а не C ++ std::string,

2

По вопросам рекламы [email protected]