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 に答える