将wchar_t转换为wstring

时间:2012-07-26 16:19:20

标签: wstring printf

很抱歉问这么简单的问题,但是我想把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);
 }

据我从示例中可以看出,我正在做正确的事情,所以我无法解决问题,我在屏幕上看到垃圾。

先谢谢你的帮助,

干杯,

尼尔

1 个答案:

答案 0 :(得分:1)

您正在使用wprintf。此功能无法接受std::wstring。您永远不应该使用printf和朋友或任何变量参数函数的主要原因是它们完全是非类型安全的,并且无法处理非POD类型 - 包括任何C ++标准库类型。

C ++ IOstream在这里可以正常运行。