我正在尝试修改一些源代码,因为我需要根据日期创建文件名,但文件名是用中文符号创建的。我正在使用nmake编译visual studio和unicode。
我不确定这是代码问题还是编译器问题。
代码提取:
struct tm * timeinfo;
struct tm *__cdecl localtime(const time_t *t);
TCHAR buffer[80];
time_t rawtime;
rawtime = time(NULL);
time(&rawtime);
timeinfo = localtime(&rawtime);
strftime(buffer, sizeof(buffer), "%d%m%Y%H%M%S", timeinfo);
prd->command[i] = '\0';
LPTSTR t;
for (t = buffer; *t; t++) {
if ((*t != '<') && (*t != '>') && (*t != '\"') &&
(*t != '|') && (*t != '/') && (*t != '\\') &&
(*t != ':'))
prd->command[i++] = *t;
}
//lstrcat(prd->command, buffer);
i = lstrlen(prd->command);
经过一些可能重复的调查后,我现在有了工作代码。我已经预料到并且调查它与TCHAR转换有关,但没有得到答案。我对此做了一些调查,并遇到了wcsftime。这似乎有效,意味着我不需要进行其他修改就可以使代码工作并在VS2013中编译好。
工作代码:
struct tm * timeinfo;
struct tm *__cdecl localtime(const time_t *t);
wchar_t buffer[80];
time_t rawtime;
time(&rawtime);
timeinfo = localtime(&rawtime);
wcsftime(buffer, sizeof(buffer), L"%Y%m%d_%H%M%S", timeinfo);
prd->command[i] = '\0';
lstrcat(prd->command, buffer);
i = lstrlen(prd->command);
s++;