【发布时间】:2018-08-28 06:23:28
【问题描述】:
我尝试检查使用 W winapi vs A 的重要性和原因,(W 表示宽字符,A 表示 ascii 对吗?)
我做了一个简单的例子,我收到了当前用户的临时路径,如下所示:
CHAR pszUserTempPathA[MAX_PATH] = { 0 };
WCHAR pwszUserTempPathW[MAX_PATH] = { 0 };
GetTempPathA(MAX_PATH - 1, pszUserTempPathA);
GetTempPathW(MAX_PATH - 1, pwszUserTempPathW);
printf("pathA=%s\r\npathW=%ws\r\n",pszUserTempPathA,pwszUserTempPathW);
我当前的用户有一个俄语名字,所以它是用西里尔字母写的,printf 输出如下:
pathA=C:\users\Пыщь\Local\Temp
pathW=C:\users\Пыщь\Local\Temp
所以两条路径都很好,我想我会收到一些错误,或者因为当前用户是 unicode,所以会收到一些带有 GetTempPathA 的符号,但我发现,西里尔字符实际上包含在扩展的 ascii 字符中放。所以我有一个问题,如果我要使用我的软件,它会在当前用户的临时文件夹中提取数据,他是中国人(假设他的用户名中有中文符号),我会使用GetTempPathA 版本?对于直接使用 winapi 的生产软件,我是否应该始终使用 W 前缀函数?
【问题讨论】:
标签: c windows winapi unicode ascii