1. 程式人生 > >GetModuleFileName 獲取路徑輸出只顯示 碟符的問題

GetModuleFileName 獲取路徑輸出只顯示 碟符的問題

    主要的錯誤原因在於 Unicode 和 ascii 不同的輸出方式導致,錯因 : TCHAR 是nicode 版本的定義,需採用 wprintf or std::wcout 輸出對應的字串,用 printf 輸出的路徑就會只有碟符。

    unicode 和 ascii 對應不同的函式實現。

    printf 和 wprintf 分別對應 asiic 和 unicode 版本的輸出函式,不同的編碼要採用對應的輸出形式。

// 測試環境:vs2010
#include<windows.h>

TCHAR buffer[MAX_PATH]; // MAX_PATH 預設巨集
int len = GetModuleFileName( NULL, buffer, MAX_PATH );

printf("[%d]\n",len); // 不可用 ascii 來輸出 unicode 的字串,不然無法得到結果
wprintf(L"[%ls]\n",buffer);
std::wcout << buffer << std::endl;