最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c++ TCHAR轉string導致中文缺失或亂碼問題及解決

 更新時間:2023年08月01日 10:48:24   作者:勺子叔  
這篇文章主要介紹了c++ TCHAR轉string導致中文缺失或亂碼問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

c++ TCHAR轉string導致中文缺失或亂碼

1.確定編碼方式

首先,確定TCHAR字符串的編碼方式。

TCHAR可以表示寬字符,在Unicode編碼環(huán)境中,TCHAR被定義為wchar_t類型;在ANSI編碼環(huán)境下,TCHAR被定義為char類型

2.使用適當?shù)暮瘮?shù)進行轉換

如果TCHAR字符集是ANSI(窄字符)編碼

可以使用wcstombs或者使用CString的簡化方法GetBuffer將TCHAR轉換成char數(shù)組,并將該數(shù)組存儲在string中:

std::string ConvertTCHARToString(const TCHAR* tcharString)
{
    char charString[256];
    wcstombs(charString, tcharString, sizeof(charString));
    return std::string(charString);
}

如果TCHAR字符集是Unicode(寬字符)編碼

可以使用WideCharToMultiByte函數(shù)將寬字符轉換成窄字符

std::string ConvertTCHARToString(const TCHAR* tcharString)
{
    int bufferSize = WideCharToMultiByte(CP_UTF8, 0, tcharString, -1, nullptr, 0, nullptr, nullptr);
    std::string result(bufferSize, '\0');
    WideCharToMultiByte(CP_UTF8, 0, tcharString, -1, &result[0], bufferSize, nullptr, nullptr);
    return result;
}

如果上述轉換方式出現(xiàn)亂碼,可能是TCHAR字符串的保存方式非UTF-8,可以修改CP_UTF8,用對應的代碼頁值進行轉換,

例如,使用CP_ACP可以表示使用當前系統(tǒng)的默認代碼頁:

std::string ConvertTCHARToString(const TCHAR* tcharString)
{
    int bufferSize = WideCharToMultiByte(CP_ACP, 0, tcharString, -1, nullptr, 0, nullptr, nullptr);
    std::string result(bufferSize, '\0');
    WideCharToMultiByte(CP_ACP, 0, tcharString, -1, &result[0], bufferSize, nullptr, nullptr);
    return result;
}

UE4 C++ FString亂碼顯示問號

如果以"xxx"這種形式并且xxx為中文時,直接賦值給FString的變量會丟失數(shù)據(jù)導致系統(tǒng)無法識別,因此需要做特殊處理。

第一種解決

引號前加L表示將字符串轉為unicode的字符串,也就是每個字符占用兩個字節(jié)。

FString str = L"小明";

第二種解決

UTF8_TO_TCHAR,也就是將字符串以UTF8格式保存轉為TCHAR,TCHAR再隱式轉換為FString。

FString str = UTF8_TO_TCHAR("小紅");

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • c++ 對數(shù)器實現(xiàn)示例

    c++ 對數(shù)器實現(xiàn)示例

    對數(shù)器用于在自己的本地平臺驗證算法正確性,本文詳細的介紹了c++ 對數(shù)器實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 詳解C語言-二級指針三種內(nèi)存模型

    詳解C語言-二級指針三種內(nèi)存模型

    這篇文章主要介紹了詳解C語言-二級指針三種內(nèi)存模型的相關知識,文中代碼非常詳細,供大家參考和學習,感興趣的朋友可以了解下
    2020-06-06
  • C/C++中接收return返回來的數(shù)組元素方法示例

    C/C++中接收return返回來的數(shù)組元素方法示例

    return是C++預定義的語句,它提供了種植函數(shù)執(zhí)行的一種放大,最近學習中遇到了相關return的內(nèi)容,覺著有必要總結一下,這篇文章主要給大家介紹了關于C/C++中如何接收return返回來的數(shù)組元素的相關資料,需要的朋友可以參考下。
    2017-12-12
  • Qt項目實戰(zhàn)之實現(xiàn)多文本編輯器

    Qt項目實戰(zhàn)之實現(xiàn)多文本編輯器

    這篇文章主要為大家詳細介紹了如何利用Qt實現(xiàn)簡易的多文本編輯器,文中的示例代碼講解詳細,具有一定的參考價值,感興趣的小伙伴可以了解一下
    2023-03-03
  • C++11可變參數(shù)模板的具體實現(xiàn)

    C++11可變參數(shù)模板的具體實現(xiàn)

    C++11引入的可變參數(shù)模板是一項非常強大的特性,它極大地提升了模板的擴展性,可變參數(shù)模板允許我們定義可以接受任意數(shù)量和類型參數(shù)的模板,這在處理不定數(shù)量參數(shù)的場景中非常有用,感興趣的可以了解一下
    2025-06-06
  • 淺析設計模式中的代理模式在C++編程中的運用

    淺析設計模式中的代理模式在C++編程中的運用

    這篇文章主要介紹了設計模式中的代理模式在C++編程中的運用,代理模式最大的好處就是實現(xiàn)了邏輯和實現(xiàn)的徹底解耦,需要的朋友可以參考下
    2016-03-03
  • C++ Boost Flyweight庫使用介紹

    C++ Boost Flyweight庫使用介紹

    Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱
    2022-12-12
  • C語言中輸入輸出流與緩沖區(qū)的深入講解

    C語言中輸入輸出流與緩沖區(qū)的深入講解

    一般情況下,由鍵盤輸入的字符并沒有直接送入程序,而是被存儲在一個緩沖區(qū)當中。下面這篇文章主要給大家介紹了關于C語言中輸入輸出流與緩沖區(qū)的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-09-09
  • C++中protobuf?的交叉編譯使用詳解

    C++中protobuf?的交叉編譯使用詳解

    為了提高通信效率,可以采用?protobuf?替代?XML?和?Json?數(shù)據(jù)交互格式,protobuf?相對來說數(shù)據(jù)量小,在進程間通信或者設備之間通信能夠提高通信速率。下面介紹?protobuf?在?ARM?平臺上的使用,需要的朋友可以參考下
    2022-07-07
  • 淺談C++內(nèi)存分配及變長數(shù)組的動態(tài)分配

    淺談C++內(nèi)存分配及變長數(shù)組的動態(tài)分配

    下面小編就為大家?guī)硪黄獪\談C++內(nèi)存分配及變長數(shù)組的動態(tài)分配。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09

最新評論

甘泉县| 博白县| 通江县| 湖南省| 陕西省| 土默特右旗| 中山市| 龙游县| 双鸭山市| 孝义市| 当雄县| 临颍县| 农安县| 田林县| 大石桥市| 乌鲁木齐县| 孟连| 南靖县| 平江县| 夏河县| 舟山市| 扎兰屯市| 林芝县| 纳雍县| 阿拉尔市| 应城市| 原阳县| 武义县| 观塘区| 萨迦县| 湛江市| 庄河市| 子洲县| 武汉市| 新密市| 河津市| 宽甸| 佛坪县| 鸡西市| 永德县| 天镇县|