为什么我在打印字符串时会得到十六进制值

Why do I get a hexadecimal value when I print a string?

本文关键字:十六进制 打印 字符串 为什么      更新时间:2023-10-16

>怎么了?为什么我在输出时得到 0x0000 等?

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结构使用wchar_t类型进行szExeFile,并且std::cout不了解如何处理宽字符。在这种情况下,它只是打印指针值。

您可以使用std::wcout打印宽字符值。