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);
Другие вопросы по тегам