0

很抱歉提出这么简单的问题,但我试图将 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);
 }

据我从示例中可以看出,我正在做正确的事情,所以我不能害羞地在屏幕上看到垃圾。

在此先感谢您的帮助,

干杯,

尼尔

4

1 回答 1

1

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

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

于 2012-07-26T16:22:13.440 回答