很抱歉问这么简单的问题,但是我想把wchar_T放到wstring中,但是当我打印出来检查它时,我从wstring中得到了垃圾。代码如下:
wchar_t windowsDir[255];
memset(windowsDir, NULL, sizeof(windowsDir));
GetWindowsDirectory(windowsDir, 255);
std::wstring winDir(windowsDir);
if (debug){
wprintf(L"Windows Dir is %s\r\n", windowsDir);
wprintf(L"Windows Dir is %s\r\n", winDir);
}
据我从示例中可以看出,我正在做正确的事情,所以我无法解决问题,我在屏幕上看到垃圾。
先谢谢你的帮助,
干杯,
尼尔
答案 0 :(得分:1)
您正在使用wprintf
。此功能无法接受std::wstring
。您永远不应该使用printf
和朋友或任何变量参数函数的主要原因是它们完全是非类型安全的,并且无法处理非POD类型 - 包括任何C ++标准库类型。
C ++ IOstream在这里可以正常运行。