欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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)文章

  • opencv3/C++ 使用Tracker實(shí)現(xiàn)簡(jiǎn)單目標(biāo)跟蹤

    opencv3/C++ 使用Tracker實(shí)現(xiàn)簡(jiǎn)單目標(biāo)跟蹤

    今天小編就為大家分享一篇opencv3/C++ 使用Tracker實(shí)現(xiàn)簡(jiǎn)單目標(biāo)跟蹤,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • Qt Quick Designer灰色或者禁用的解決

    Qt Quick Designer灰色或者禁用的解決

    本文主要介紹了Qt Quick Designer灰色或者禁用的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • VScode搭建C/C++開(kāi)發(fā)環(huán)境的詳細(xì)過(guò)程

    VScode搭建C/C++開(kāi)發(fā)環(huán)境的詳細(xì)過(guò)程

    最近迷上了vscode,小巧美觀,最主要的是全平臺(tái),但是vscode并不是ide,必須得自己配置環(huán)境,下面這篇文章主要給大家介紹了關(guān)于VScode搭建C/C++開(kāi)發(fā)環(huán)境的詳細(xì)過(guò)程,需要的朋友可以參考下
    2023-06-06
  • 基于Qt編寫的文件傳輸工具

    基于Qt編寫的文件傳輸工具

    這篇文章主要為大家詳細(xì)介紹了如何基于Qt編寫一個(gè)文件傳輸工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-12-12
  • C 語(yǔ)言基礎(chǔ)教程(我的C之旅開(kāi)始了)[二]

    C 語(yǔ)言基礎(chǔ)教程(我的C之旅開(kāi)始了)[二]

    C 語(yǔ)言基礎(chǔ)教程(我的C之旅開(kāi)始了)[二]...
    2007-02-02
  • 詳解C++編程中的文件流與字符串流

    詳解C++編程中的文件流與字符串流

    這篇文章主要介紹了C++編程中的文件流與字符串流,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • C++中Lambda表達(dá)式的語(yǔ)法與實(shí)例

    C++中Lambda表達(dá)式的語(yǔ)法與實(shí)例

    C++ 11 中的 Lambda 表達(dá)式用于定義并創(chuàng)建匿名的函數(shù)對(duì)象,以簡(jiǎn)化編程工作,下面這篇文章主要給大家介紹了關(guān)于C++中Lambda表達(dá)式的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-10-10
  • C++編程之CString、string與、char數(shù)組的轉(zhuǎn)換

    C++編程之CString、string與、char數(shù)組的轉(zhuǎn)換

    這篇文章主要介紹了C++編程之CString、string與、char數(shù)組的轉(zhuǎn)換的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • C++中opencv4.1.0環(huán)境配置的詳細(xì)過(guò)程

    C++中opencv4.1.0環(huán)境配置的詳細(xì)過(guò)程

    這篇文章主要介紹了C++中opencv4.1.0環(huán)境配置的詳細(xì)過(guò)程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • C++IO流之fstream,?stringstream使用小結(jié)

    C++IO流之fstream,?stringstream使用小結(jié)

    C語(yǔ)言中常用的輸入輸出函數(shù)有如下幾種:前者是格式化標(biāo)準(zhǔn)輸入輸出,后者是格式化文件輸入輸出,最后是格式化字符串輸入輸出,這篇文章主要介紹了C++IO流:fstream,?stringstream總結(jié),需要的朋友可以參考下
    2022-04-04

最新評(píng)論