2012-06-26 28 views
0

怎么了?为什么我输出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; 
} 

回答

2

因为你PROCESSENTRY32W结构使用wchar_t类型szExeFile这是可能的,而std::cout不明白如何处理宽字符。在这种情况下,它只是打印指针值。您可以使用std::wcout打印宽字符值。

+0

我应该如何输出它? –

+0

啊WCOUT,谢谢!!!我会在9分钟内接受你的答案! –