怎么了?为什么我在输出中得到 0x0000etc?
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
if( !hSnapshot )
return -1;
PROCESSENTRY32W pe32w;
memset( &pe32w, 0, sizeof( pe32w ) );
pe32w.dwSize = sizeof( PROCESSENTRY32W );
Process32First( hSnapshot, &pe32w );
do
{
std::cout << pe32w.szExeFile << std::endl;
} while( Process32Next( hSnapshot, &pe32w ) );
CloseHandle( hSnapshot );
return 0;
}
最佳答案
这可能是因为您的 PROCESSENTRY32W
结构正在为 szExeFile
和 std::cout
使用 wchar_t
类型不明白如何处理宽字符。在这种情况下,它只是打印指针值。
您可以使用 std::wcout
打印宽字符值。
关于c++ - 为什么打印字符串时得到的是十六进制值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11216725/