#c #strin& #directory #output #lo&file
#c #строка #каталог #вывод #файл журнала
Вопрос:
Я работаю в системе, где я хочу объединить журнал в виде файла .txt. Этот файл должен создаваться при каждом запуске программы и в будущем будет записываться в него, когда я создам все свои коды ошибок.
Чтобы сохранить уникальность этих файлов журнала, я хотел использовать метку времени. Для получения этих меток я использовал следующий код:
strin& GetDateStamp() {
time_t now = time(0);
struct tm tstruct;
char stamp[80];
tstruct = *localtime(amp;now);
strftime(stamp, sizeof(stamp), "%Y-%m-%d-%X", amp;tstruct);
return stamp;
}
Затем эта функция вызывается в другой функции, где я проверяю, создан ли каталог для журнала, если это не так, то она создает его.
void OpenNewLo&File(strin& filepath)
{
strin& datestamp;
strin& lo&path = filepath "Lo&\";
if (_mkdir(lo&path.c_str()) == 0)
{
cout << "dir created" << endl;
}
else if(_mkdir(lo&path.c_str()) == EEXIST)
{
cout << "dir already exists" << endl;
}
else if (_mkdir(lo&path.c_str()) == ENOENT)
{
cout << "path could not be found" << endl;
}
ofstream outfile;
datestamp = GetDateStamp();
strin& createFile="";
createFile = lo&path datestamp ".txt";
cout << createFile << endl;
outfile.open(createFile);
}
Код присутствует в заголовочном файле и вызывается из моего основного cpp.
Вывод, который я получаю сейчас, — это следующий путь:
C:…Lo&2020-08-10-15:59:22.txt
но в моем каталоге журнала не отображается файл .txt.
Возможно, решение прямо передо мной, но, к сожалению, я его не вижу.
Надеюсь, кто-нибудь из вас сможет мне помочь 🙂
Комментарии:
1. Если вы используете Windows, то двоеточие
:
в именах файлов недопустимо2. черт. Решением для этого могло бы быть удаление метки времени и, я полагаю, просто оставить дату.
3. Другим решением было бы заменить двоеточия другим символом
4. Конечно 🙂 Спасибо, ребята!