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

c++ TCHAR轉(zhuǎn)string導(dǎo)致中文缺失或亂碼問(wèn)題及解決

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

c++ TCHAR轉(zhuǎn)string導(dǎo)致中文缺失或亂碼

1.確定編碼方式

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

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

2.使用適當(dāng)?shù)暮瘮?shù)進(jìn)行轉(zhuǎn)換

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

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

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

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

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

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;
}

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

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

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亂碼顯示問(wèn)號(hào)

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

第一種解決

引號(hào)前加L表示將字符串轉(zhuǎn)為unicode的字符串,也就是每個(gè)字符占用兩個(gè)字節(jié)。

FString str = L"小明";

第二種解決

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

FString str = UTF8_TO_TCHAR("小紅");

總結(jié)

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

    淺析設(shè)計(jì)模式中的代理模式在C++編程中的運(yùn)用

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

    C++ Boost Flyweight庫(kù)使用介紹

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

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

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

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

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

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

    下面小編就為大家?guī)?lái)一篇淺談C++內(nèi)存分配及變長(zhǎng)數(shù)組的動(dòng)態(tài)分配。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-09-09

最新評(píng)論

大理市| 印江| 汉源县| 郁南县| 阿坝县| 宁城县| 宁城县| 渝中区| 开化县| 陆河县| 西藏| 资溪县| 栾川县| 共和县| 札达县| 民县| 宁强县| 垣曲县| 五华县| 城固县| 库尔勒市| 凤台县| 阳朔县| 西青区| 章丘市| 南昌市| 永嘉县| 光泽县| 乐安县| 左贡县| 奉节县| 项城市| 石城县| 镇坪县| 乡宁县| 奉节县| 黑河市| 米脂县| 含山县| 阆中市| 伊通|