-1

我正在尝试设置一个程序,该程序可以在每次用于填充数据时创建一个新目录。我希望文件夹的名称是创建时间的时间戳。我已经编写了一个创建时间戳并将其作为字符串返回的函数。

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 中使用

  • 还有其他我只是想念的方式吗

4

1 回答 1

0

由于您的文件夹路径字符串是char基于字符串,只需CreateDirectoryA()直接使用,而不是使用TCHAR基于的CreateDirectory()(显然已映射到CreateDirectoryW()您的项目中),例如:

string direc = "C:\\Users\\Daniel\\Documents\\VS17\\" + timestamp(); 
CreateDirectoryA(direc.c_str(), NULL);
于 2017-05-25T19:56:38.490 回答