Если у вас есть расширение файла, то лучшее место, чтобы положить это было бы в Sprintf/CString :: Format вызова при форматировании строки даты. Кроме того, обычно, когда для сопоставление даты имени файла выполняется в обратном порядке yyyy/mm/dd, так что сортировка корректно работает в проводнике Windows.
1 Заключительная вещь, прежде чем перейти в какой-то код: в Windows есть недопустимые символы для имен файлов, среди которых символы слэша [EDIT] и символ двоеточия [/ EDIT]. Обычно для имен файлов используются точки или тире. В моих решениях используются слэши и формат даты, которые вы используете, сохраняя код, но вы должны изменить, по крайней мере, косые черты, если вы используете его для имен файлов.
Позвольте мне привести несколько решений для Вас:
1: Подобно тому, что было:
char time[60];
sprintf(time, "%u/%u/%u %u:%u:%u", t.wDay, t.wMonth, t.wYear, t.wHour + 5, t.wMinute, t.wSecond);
CString m_strFileName(time); //This uses the CString::CString(const char *) constructor
//Note: If m_strFileName is a member variable of a class (as the m_ suggests), then you should use the = operator and not the variable declaration like this:
m_strFileName = time; //This variable is already defined in the class definition
2: Использование CString::Format
CString m_strFileName; //Note: This is only needed if m_strFileName is not a member variable of a class
m_strFileName.Format("%u/%u/%u %u:%u:%u", t.wDay, t.wMonth, t.wYear, t.wHour + 5, t.wMinute, t.wSecond);
3: Почему вы с помощью CString?
Если это не переменная-член класса, то вам не нужно использовать CString, с которой вы можете напрямую использовать время.
char time[60];
sprintf(time, "%u/%u/%u %u:%u:%u", t.wDay, t.wMonth, t.wYear, t.wHour + 5, t.wMinute, t.wSecond);
FILE *pFile = fopen(time, "w");
//or...
HANDLE hFile = CreateFile(time, ...);
UPDATE: ОТВЕТ НА ВАС ПЕРВЫЙ КОММЕНТАРИЙ:
NO CString::GetBuffer используется для получения изменяемого буфера CString, что вы можете написать на, как правило, в качестве буфера для Sprintf, GetModuleFileName, ... функций.
Если вы просто хотите, значение строки для чтения, используйте оператор литья, как это:
CString str("hello");
printf("%s\n", (LPCSTR)str); //The cast operator here gets a read-only value of the string
«Это не работает» очень расплывчато. Вы получаете ошибки компиляции? Это крушение? Является ли результат неправильным? – molbdnilo