c++ - 为什么打印字符串时得到的是十六进制值?

标签 c++ winapi process

怎么了?为什么我在输出中得到 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 结构正在为 szExeFilestd::cout 使用 wchar_t 类型不明白如何处理宽字符。在这种情况下,它只是打印指针值。

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

关于c++ - 为什么打印字符串时得到的是十六进制值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11216725/

相关文章:

c++ - 错误 : no matching function for call to default copy constructor?

c - MinGW 上函数 'getaddrinfo' 的隐式声明

c# - 运行进程并获取 "Windows protected your PC"消息

c++ - std::list 迭代器没有被分配

c++ - 使用-j1而不是-jN编译有什么好处

c++ - & 运算符是 C++ 中发明的吗

c++ - WM_ENTERSIZEMOVE/WM_EXITSIZEMOVE - 使用菜单时,并不总是配对

delphi - 如何等待异步 CopyHere(Shell API 命令)完成 ZIP 压缩?

macos - 确定流程的架构

process - 需要帮助将 time.sleep 与 python 3 中的多处理结合起来