国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MFC : 多字節(jié)、寬字節(jié)等之間的數(shù)據(jù)類型轉(zhuǎn)換

這篇具有很好參考價值的文章主要介紹了MFC : 多字節(jié)、寬字節(jié)等之間的數(shù)據(jù)類型轉(zhuǎn)換。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

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ù)類型。

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)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • OpenCV中Mat、Ipllmage以及Halcon中Hobject數(shù)據(jù)類型之間轉(zhuǎn)換

    OpenCV中Mat、CVMat、Ipllmage類型都可以代表和顯示圖像。IplImage是由CVMat派生,而CvMat由CvArr派生即CvArr - CvMat - IplImage,Mat類型則是C++版本的矩陣類型(CvArr用作函數(shù)的參數(shù),無論傳入的是CvMat或IplImage,內(nèi)部都是按CvMat處理)。 Mat類型側(cè)重于計算,數(shù)學(xué)性較高; 而CvMat和IplImage類型

    2024年02月10日
    瀏覽(31)
  • c++ 11 新特性 不同數(shù)據(jù)類型之間轉(zhuǎn)換函數(shù)之reinterpret_cast

    c++ 11 新特性 不同數(shù)據(jù)類型之間轉(zhuǎn)換函數(shù)之reinterpret_cast

    一.不同數(shù)據(jù)類型之間轉(zhuǎn)換函數(shù) reinterpret_cast 介紹 reinterpret_cast 是C++中的一種類型轉(zhuǎn)換操作符,用于執(zhí)行低級別的位模式轉(zhuǎn)換。具體來說, reinterpret_cast 可以實現(xiàn)以下功能: 指針和整數(shù)之間的轉(zhuǎn)換 :這種轉(zhuǎn)換通常用于在指針中存儲額外信息,或者在特定平臺上進行底層操作。

    2024年03月09日
    瀏覽(30)
  • [OpenCV] CV_32F與CV_8U之間的數(shù)據(jù)類型轉(zhuǎn)換

    [OpenCV] CV_32F與CV_8U之間的數(shù)據(jù)類型轉(zhuǎn)換

    最近在c++使用OpenCV時,總會因為類型轉(zhuǎn)換為發(fā)生圖片顏色錯誤,在網(wǎng)上查了些方法都不適用,總結(jié)下自己探索的經(jīng)驗。 經(jīng)常使用的是8UC(n)與32FC(n),其中8U在0-255之間使用整數(shù)對應(yīng)顏色,32F在0-1之間使用小數(shù)對應(yīng)顏色; 在使用 converTo() 進行數(shù)據(jù)類型轉(zhuǎn)換時,數(shù)據(jù)值并不會發(fā)生內(nèi)

    2024年02月12日
    瀏覽(17)
  • MyBatis實現(xiàn) Java 對象和數(shù)據(jù)庫中日期類型之間的轉(zhuǎn)換(超詳細)

    MyBatis實現(xiàn) Java 對象和數(shù)據(jù)庫中日期類型之間的轉(zhuǎn)換(超詳細)

    數(shù)據(jù)庫存儲的時間字段的類型是datetime Java實體類的時間字段類型是Date 需求:響應(yīng)前端的時間字段格式為”yyyy-MM-dd HH:mm:ss“ 1、定義resultMap 定義 Java 對象和數(shù)據(jù)庫表字段的對應(yīng)關(guān)系,在 mapper.xml 文件中使用 #{屬性名,jdbcType=數(shù)據(jù)庫字段類型} 來進行參數(shù)傳遞和結(jié)果集映射,例如

    2024年02月15日
    瀏覽(18)
  • MyBatis實現(xiàn) Java 實體類和數(shù)據(jù)庫中日期類型之間的轉(zhuǎn)換(超詳細)

    MyBatis實現(xiàn) Java 實體類和數(shù)據(jù)庫中日期類型之間的轉(zhuǎn)換(超詳細)

    數(shù)據(jù)庫存儲的時間字段的類型是datetime Java實體類的時間字段類型是Date 需求:響應(yīng)前端的時間字段格式為”yyyy-MM-dd HH:mm:ss“ 1、定義resultMap 定義 Java 對象和數(shù)據(jù)庫表字段的對應(yīng)關(guān)系,在 mapper.xml 文件中使用 #{屬性名,jdbcType=數(shù)據(jù)庫字段類型} 來進行參數(shù)傳遞和結(jié)果集映射,例如

    2024年02月20日
    瀏覽(26)
  • C++中string類型和int類型之間的相互轉(zhuǎn)換【全網(wǎng)最全】

    字符串操作是各種算法題中的??停芏鄶?shù)據(jù)常常以字符串形式給出,其中有的需要自己轉(zhuǎn)化成整數(shù),而一些整型數(shù)據(jù)有時轉(zhuǎn)換成字符串處理起來更加方便,比如判斷一個整數(shù)是否是回文數(shù),所以字符串和整數(shù)的轉(zhuǎn)換是一些問題處理的基礎(chǔ)步驟, C++ ?在處理這類問題時并不像

    2024年02月04日
    瀏覽(32)
  • MFC第八天 基本數(shù)據(jù)類型介紹

    CRect類是MFC中用于表示矩形的類。它提供了方便的方法來操作矩形的位置和大小。CRect類常用于圖形繪制、窗口管理和布局等場景。 可以用于繪制矩形、橢圓、圓等圖形時需要指定其位置和大小。此外,CRect類還常用于窗口管理,可以通過CRect對象來設(shè)置窗口的位置和大小。它

    2024年02月11日
    瀏覽(22)
  • C語言中基本數(shù)據(jù)類型所占字節(jié)數(shù)

    C語言中基本數(shù)據(jù)類型所占字節(jié)數(shù)

    一、 C語言基本數(shù)據(jù)類型 short、int、long、char、float、double 這六個代表C 語言里的六種基本數(shù)據(jù)類型。 在不同的系統(tǒng)上,這些類型占據(jù)的字節(jié)長度是不同的: 16位編譯器: char/unsigned char :1字節(jié) char? :2字節(jié) short int:2字節(jié) int/unsigned int:2字節(jié) long int:4字節(jié) float:4字節(jié)

    2024年02月04日
    瀏覽(20)
  • Java中基本數(shù)據(jù)類型占幾個字節(jié)多少位

    字節(jié):byte:用來計量存儲容量的一種計量單位;位:bit 一個字節(jié)等于8位 1byte = 8bit 1b = 8bit(位) 1Kb = 1024b 1Mb = 1024kb 1Gb = 1024Mb 字節(jié)的單位就是B,1個英文字母一般是占1個字節(jié)(根據(jù)不同的編碼),一個中文一般是2個字節(jié)。 char占用的是2個字節(jié) 16位,所以一個char類型的可以存儲一

    2023年04月19日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包