C++ Как мне создать каталог с меткой времени, используя путь к файлу, содержащийся в строке?
Я пытаюсь настроить программу, которая может создавать новый каталог каждый раз, когда он используется для заполнения данными. Я хочу, чтобы имя папки было отметкой времени, когда она была создана. Я уже написал функцию, которая создает метку времени и возвращает ее в виде строки.
string timestamp() {
//create a timecode specific folder
// current date/time based on current system
time_t now = time(0);
struct tm timeinfo;
localtime_s(&timeinfo, &now);
// print various components of tm structure.
cout << "Year: " << 1900 + timeinfo.tm_year << endl;
int Y = 1900 + timeinfo.tm_year;
cout << "Month: " << 1 + timeinfo.tm_mon << endl;
int M = 1 + timeinfo.tm_mon;
cout << "Day: " << timeinfo.tm_mday << endl;
int D = timeinfo.tm_mday;
cout << "Time: " << 1 + timeinfo.tm_hour << ":";
int H = timeinfo.tm_hour;
cout << 1 + timeinfo.tm_min << ":";
int Mi = timeinfo.tm_min;
cout << 1 + timeinfo.tm_sec << endl;
int S = 1 + timeinfo.tm_sec;
string timestampStr;
stringstream convD, convM, convY, convH, convMi, convS;
convD << D;
convM << M;
convY << Y;
convH << H;
convMi << Mi;
convS << S;
cout << "Timestamp:" << endl;
timestampStr = convD.str() + '.' + convM.str() + '.' + convY.str() + '-' + convH.str() + ':' + convMi.str() + ':' + convS.str();
cout << timestampStr << endl;
return timestampStr;
}
Этот бит работает нормально и дает мне строку с текущей отметкой времени. У меня также есть вторая строка с путем к расположению папок, которое я объединяю, чтобы указать полный путь и имя новой папки в строке, например, "C:\\Users\\Daniel\\Documents\\VS17\\25.5.2017-16:47:51"
Я знаю, что могу использовать
CreateDirectory(direc, NULL);
создать каталог, когда у меня есть путь к файлу, такой как в моей строке, но в формате LPCWSTR. Так что на самом деле мой вопрос
Как мне преобразовать мою строку в формат LPCWSTR для использования в CreateDirectory
Есть ли какой-то другой способ, которым я просто скучаю
1 ответ
Поскольку ваша строка пути к папке char
на основе строки, просто используйте CreateDirectoryA()
напрямую, вместо использования TCHAR
основан CreateDirectory()
(который явно отображается на CreateDirectoryW()
в вашем проекте), например:
string direc = "C:\\Users\\Daniel\\Documents\\VS17\\" + timestamp();
CreateDirectoryA(direc.c_str(), NULL);