MessageBox产生的输出不同于Cout C ++

时间:2011-12-03 21:38:50

标签: c++ io

我正在尝试通过调用GetModuleFileName()来使用其VM地址加载图像的名称,这似乎将值正确地返回到TCHAR[]数组中。我可以使用MessageBox()正确显示数据,但cout <<似乎显示一些时髦的十六进制数字。

TCHAR buf[MAX_PATH];
HMODULE hProc = LoadLibrary(TEXT("kernel32.dll"));
GetModuleFileName(hProc, buf, MAX_PATH);
cout << buf; //Produces the odd number
MessageBox(NULL, buf, NULL, MB_OK); //Produces correct filepath
FreeLibrary(hProc);

我应该为cout设置一个标志,以便它知道正确打印吗?谢谢!

2 个答案:

答案 0 :(得分:5)

可能您需要使用wcout,因为您的TCHAR可能是单一的。或转换它。

答案 1 :(得分:2)

也许你会有更好的运气

std::wcout << buf;