目錄
ATL 模板宏
W2A 轉(zhuǎn)多字節(jié)
A2W 轉(zhuǎn)寬字節(jié)
A2T 轉(zhuǎn) CString
T2A 轉(zhuǎn) char *
TEXT 宏定義
CString 轉(zhuǎn)換
int 轉(zhuǎn) CString
double 轉(zhuǎn) CString
CString 轉(zhuǎn) double
CString 轉(zhuǎn)換 string
寬字符串轉(zhuǎn)換
WideCharToMultiByte
BSTR 轉(zhuǎn)換 string
DWORD
LPCSTR 長指針常量字符串
LPCWSTR 常量寬字符指針
T2W 轉(zhuǎn)換多字節(jié) char *
A2CW 轉(zhuǎn)換多字節(jié)
ATL 模板宏
-
#include <atlconv.h>
-
宏定義:USES_CONVERSION
W2A 轉(zhuǎn)多字節(jié)
????把 unicode 字符轉(zhuǎn)換成 ansi 字符,寬字節(jié)轉(zhuǎn)換為多字節(jié)
A2W 轉(zhuǎn)寬字節(jié)
????多字節(jié)轉(zhuǎn)換為寬字節(jié),char * ==> wchar *
A2T 轉(zhuǎn) CString
????char * ==> CString
T2A 轉(zhuǎn) char *
????CString ==> char *
TEXT 宏定義
根據(jù)項目屬性 —— 字符編碼,進行自動編碼類型
AfxMessageBox( TEXT( "注入成功!" ) );
CString 轉(zhuǎn)換
int 轉(zhuǎn) CString
CString str;
int number = 15;
// str="15"
str.Format(_T("%d"),number);
double 轉(zhuǎn) CString
// str="1.4600"
str.Format(_T("%.4f"),number);
CString 轉(zhuǎn) double
str = _ttof( "7000.000" ); // 7000.000
CString 與?string
注:const char* 類型可以直接給 CString 類型賦值
CString cstr;
string str = “asdasd”;
cstr = str.c_str();
CString cstr = “asdasd”;
string str = cstr;
const char * pchar = str.c_str();
寬字符串轉(zhuǎn)換
WideCharToMultiByte
????此函數(shù)把寬字符串轉(zhuǎn)換成指定的新的字符串,如ANSI,UTF8等,新字符串不必是多字節(jié)字符集。?(---Unicode?轉(zhuǎn)?ANSI(GB2312),UTF8)
int WideCharToMultiByte(
UINT CodePage, // 指定執(zhí)行轉(zhuǎn)換的代碼頁,可為系統(tǒng)已安裝或有效的任何代碼頁所給定的值
DWORD dwFlags, // 指定如何處理沒有轉(zhuǎn)換的字符,不設(shè)此函數(shù)會運行的更快些,設(shè)為 0
LPWSTR lpWideCharStr, // 待轉(zhuǎn)換的寬字符串
int cchWideChar, // 待轉(zhuǎn)換寬字符串的長度,-1表示轉(zhuǎn)換到字符串結(jié)尾
LPCSTR lpMultiByteStr, // 接收轉(zhuǎn)換后輸出新串的緩沖區(qū)
int cbMultiByte, // 輸出緩沖區(qū)大小,若為0,lpMultiByteStr 將被忽略,
// 函數(shù)將返回所需緩沖區(qū)大小而不使用 lpMultiByteStr
LPCSTR lpDefaultChar, // 指向字符的指針,找不到相應(yīng)字符時此字符為默認字符代替。
// 如果為 NULL 則使用系統(tǒng)默認字符。
// NULL 的 dwFlags 用此參數(shù),失敗并設(shè)置錯誤碼ERROR_INVALID_PARAMETER
PBOOL pfUsedDefaultChar // 開關(guān)變量的指針,用以表明是否使用過默認字符。
// NULL 的 dwFlags 使用此參數(shù),失敗并設(shè)置錯誤碼ERROR_INVALID_PARAMETER。
// lpDefaultChar 和 lpUsedDefaultChar 都設(shè)為 NULL,函數(shù)會更快一些。
);
// cbMultiByte 非 0,返回寫入 lpMultiByteStr 的字節(jié)數(shù)(包括字符串結(jié)尾的null);
// cbMultiByte 為 0,則返回轉(zhuǎn)換所需字節(jié)數(shù),函數(shù)失敗,返回 0。
參數(shù) | 參數(shù)值 | 作用 |
---|---|---|
CodePage | CP_ACP | 當前系統(tǒng)ANSI代碼頁 |
CP_MACCP | 當前系統(tǒng)Macintosh代碼頁 | |
CP_OEMCP | 當前系統(tǒng)OEM代碼頁,一種原始設(shè)備制造商硬件掃描碼 | |
CP_SYMBOL | 符號代碼頁 | |
CP_THREAD_ACP | 當前線程ANSI代碼頁 | |
dwFlags | WC_NO_BEST_FIT_CHARS | 把不能直接轉(zhuǎn)換成相應(yīng)多字節(jié)字符的 Unicode 字符轉(zhuǎn)換成 lpDefaultChar 指定的默認字符。 |
WC_ERR_INVALID_CHARS | 此選項會致使函數(shù)遇到無效字符時失敗返回,并且 GetLastError 會返回錯誤碼ERROR_NO_UNICODE_TRANSLATION。否則函數(shù)會自動丟棄非法字符。此選項只能用于 UTF8。 | |
WC_COMPOSITECHECK | 把合成字符轉(zhuǎn)換成預(yù)制的字符。 它可以與后三個選項中的任何一個組合使用,如果沒有與他們中的任何一個組合,則與選項 WC_SEPCHARS 相同。 |
|
WC_DISCARDNS | 轉(zhuǎn)換時丟棄不占空間的字符 | |
WC_SEPCHARS | 轉(zhuǎn)換時產(chǎn)生單獨的字符,此是默認轉(zhuǎn)換選項 | |
WC_DEFAULTCHAR | 轉(zhuǎn)換時使用默認字符代替例外的字符,(最常見的如’?’) |
BSTR 轉(zhuǎn)換 string
BSTR dval;
// VarArray.GetStringByIndex( i, &dval );
variableNumber.push_back( _com_util::ConvertBSTRToString( dval ) );
DWORD
????Double word,unsigned long,每個 word 為 2 個字節(jié)的長度,DWORD 為 4 個字節(jié),每個字節(jié) 8 位,共 32 位,屬于 MFC 的數(shù)據(jù)類型。文章來源:http://www.zghlxwxcb.cn/news/detail-419698.html
LPCSTR 長指針常量字符串
????LPCSTR 是 win32 和 VC++ 所使用的一種字符串數(shù)據(jù)類型,L 表示 long,P 表示指針,C 表示常量,STR 表示字符串。文章來源地址http://www.zghlxwxcb.cn/news/detail-419698.html
/// 1 LPCSTR 轉(zhuǎn) CString
LPCSTR lpStr = "text";
CString str(lpStr);
/// 2 CString 轉(zhuǎn) LPCSTR
CString cstr("text");
LPCSTR lpstr = (LPCSTR)cstr.GetBuffer(cstr.GetLength());
LPCWSTR 常量寬字符指針
T2W 轉(zhuǎn)換多字節(jié) char *
char* szStr = "測試字符串";
CString str = CString(szStr);
USES_CONVERSION;
LPCWSTR wszClassName = new WCHAR[str.GetLength()+1];
wcscpy((LPTSTR)wszClassName,T2W((LPTSTR)str.GetBuffer(NULL)));
str.ReleaseBuffer();
A2CW 轉(zhuǎn)換多字節(jié)
char* szStr = "測試字符串";
CString str = CString(szStr);
USES_CONVERSION;
LPCWSTR wszClassName = A2CW(W2A(str));
str.ReleaseBuffer();
到了這里,關(guān)于MFC : 多字節(jié)、寬字節(jié)等之間的數(shù)據(jù)類型轉(zhuǎn)換的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!