我將Windows庫轉換爲Linux。我需要在Linux中找到LPTSTR和LPCSTR。什麼是Linux相當於LPTSTR和LPCSTR?
我知道我可以使用wchar_t可以使用,但我不確定如何使用它。
使用LPTSTR是如下方法之一:
void ErrorExit(LPTSTR zFunction)
{
}
任何幫助將不勝感激!
我將Windows庫轉換爲Linux。我需要在Linux中找到LPTSTR和LPCSTR。什麼是Linux相當於LPTSTR和LPCSTR?
我知道我可以使用wchar_t可以使用,但我不確定如何使用它。
使用LPTSTR是如下方法之一:
void ErrorExit(LPTSTR zFunction)
{
}
任何幫助將不勝感激!
在Linux中,對於庫API函數,通常不使用wchar_t
。大多數庫使用UTF-8編碼的字符串,所以它們將字符串作爲NUL終止字符的簡單數組(IMO遠遠優於用ANSI和Unicode版本複製所有函數)。
因此,考慮到這一點:
LPCTSTR
,LPCSTR
,LPCWSTR
- >const char *
。LPTSTR
,LPSTR
,LPWSTR
→char *
。如果您在使用Unicode功能,MS風格的堅持,你必須要知道,他們實際使用UTF-16編碼字符串,wchar_t
不是便攜式類型,不是由語言指定其大小。相反,你可以使用uint16_t
:
LPCWSTR
- >const uint16_t *
。LPWSTR
- >uint16_t *
。如果你想成爲額外的MS兼容,可以使用UNICODE
宏有條件的typedef的LPTSTR
和LPTCSTR
到別人的一個,但是這可能對您的問題不需要的。
IBTD。大多數庫只使用普通字符串。它們是以UTF-8編碼還是以latin1編碼,或者以任何語言環境設置爲準。如果您需要轉換,可以使用['mbtowc()'](http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/2461____.HTM) – glglgl
@glglgl :嗯,最後的部分是可以理解的。但是,大多數現代Linux發行版默認使用UTF-8語言環境(很少有理由改變它),而使用UTF-8(無論配置的語言環境如何),使用幾個高級庫(請參閱GTK,Qt,Pango,Cairo ...) 。 – rodrigo
@rodrigo謝謝!我做完! +1 –
LPTSTR - 長指針,TCHAR字符串(不要擔心,一個長指針相同的指針。)
LPCSTR - 龍指向一個常量字符串
LPSTR = char*
LPCSTR = const char*
LPWSTR = wchar_t*
LPCWSTR = const wchar_t*
LPTSTR = char* or wchar_t* depending on _UNICODE
LPCTSTR = const char* or const wchar_t* depending on _UNICODE
typedef const char* LPCSTR;
#ifdef UNICODE
typedef LPWSTR LPTSTR;
#else
typedef LPSTR LPTSTR;
#endif
謝謝你的努力+1 –
解釋單獨的首字母縮寫,證明+1 – yair
如果你在C中工作,你將得到wchar_t的編譯錯誤。它將使用C++而不是Windows上的wchar_t是2個字節;在Linux上它是4個字節。 – cup
@cup從C中刪除'wchar_t'的時候?據我所知,它存在於C中。 – glglgl
@glglgl:我不知道它是否從C中移除。它不適用於gcc 4.7.2中的C程序。適用於Windows。 – cup