2012-06-26 18 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分鐘內接受你的答案! –

相關問題