English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

小弟剛開始使用vc2005
在程式中想把某個數字TextOut出來看
但是發現wprintf所要的第一個參數用字char*和string都沒辦法用
編譯時會出現錯誤說無法轉換成LPSTR
但我記得之前用vc6似乎是可以過的
現在不知道要怎麼改才可以用呢??
另外也想弄清楚LPSTR LPCSTR這類的東西 感覺很麻煩

2006-09-18 21:16:00 · 1 個解答 · 發問者   1 in 電腦與網際網路 程式設計

1 個解答

LP 是微軟公司對資料型態所使用的一個識別字首看到LP就要想到.....別想歪了.....要想到長指標(long pointer)為什麼是「長」指標,現在已經不重要,反正是指標就對了傳統上C/C++使用1個byte也就是8個bit來表示「一個字元」而傳統的Win32 Programming當中用LPSTR  代表 char*LPCSTR 代表 const char*(印象中,VC6的winnt.h裡面可以找到類似typedef CHAR* LPSTR;的定義)但是後來寬字元成為工業標準,於是C/C++語法增加了wchar_t,用16 bit來表示一個字元。char    cs[]  = "hello";   //一個char陣列,每一個元素占1 bytewchar_t wcs[] = L"hello";  //一個wchar_t陣列,每個元素占2 byte注意text literal的前面加了一個L來區別是否是寬字元由於古董級的C/C++程式庫都不吃wchar_t,所以C/C++標準另外又擴充了針對wchar_t的wprintf、wscanf等等函數所以你的問題在於型態不符在傳統的Win32 Programming當中對寬字元的支援使用了WCHAR  代表 wchar_tLPWSTR 代表 WCHAR*而為了方便程式設計師在不同的字元寬度間轉換,所以微軟又提供了TCHAR相關巨集。TCHAR tcs[] = _T("hello");如果編譯器設定支援寬字元,則上面會變成wchar_t tcs[] = L"hello";否則變成char    tcs[] = "hello";另外定義了 LPTSTR 代表 TCHAR*

2006-09-19 06:15:21 · answer #1 · answered by novus 6 · 0 0

fedest.com, questions and answers