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

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("小紅");

總結

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

相關文章

  • 在Visual Studio中配置C++最新版netCDF庫的方法

    在Visual Studio中配置C++最新版netCDF庫的方法

    本文介紹在Windows電腦的Visual Studio軟件中,配置C++ 語言最新版netCDF庫的方法,文中通過圖文結合的形式介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2024-03-03
  • 使用C語言構建基本的二叉樹數(shù)據(jù)結構

    使用C語言構建基本的二叉樹數(shù)據(jù)結構

    這篇文章主要介紹了使用C語言使用C語言構建基本的二叉樹數(shù)據(jù)結構,包括根據(jù)前序序列和中序序列構建二叉樹的方法,需要的朋友可以參考下
    2015-08-08
  • QT基于TCP實現(xiàn)網絡聊天室程序

    QT基于TCP實現(xiàn)網絡聊天室程序

    這篇文章主要為大家詳細介紹了QT基于TCP實現(xiàn)網絡聊天室程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C++實現(xiàn)訪問者模式的基礎介紹

    C++實現(xiàn)訪問者模式的基礎介紹

    訪問者模式表示一個作用于某對象結構中各元素的操作,它使我們可以在不改變各元素的類的前提下定義作用于這些元素的新操作。對C++訪問者模式相關知識感興趣的朋友一起看看吧
    2021-09-09
  • C++begin和end運算符的返回迭代器的類型如何判斷?

    C++begin和end運算符的返回迭代器的類型如何判斷?

    今天小編就為大家分享一篇關于C++begin和end運算符的返回迭代器的類型如何判斷?,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • C語言、C++中的union用法總結

    C語言、C++中的union用法總結

    這篇文章主要介紹了C語言、C++中的union用法總結,本文講解了什么是union、C中使用union、當union遇到對象等內容,需要的朋友可以參考下
    2014-10-10
  • C++?Cartographer的入口node main詳細講解

    C++?Cartographer的入口node main詳細講解

    這篇文章主要介紹了C++Node類Cartographer的入口node main,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-03-03
  • C語言數(shù)據(jù)存儲歸類介紹

    C語言數(shù)據(jù)存儲歸類介紹

    使用編程語言進行編程時,需要用到各種變量來存儲各種信息。變量保留的是它所存儲的值的內存位置。這意味著,當您創(chuàng)建一個變量時,就會在內存中保留一些空間。您可能需要存儲各種數(shù)據(jù)類型的信息,操作系統(tǒng)會根據(jù)變量的數(shù)據(jù)類型,來分配內存和決定在保留內存中存儲什么
    2022-08-08
  • linux下c語言中隱藏進程命令行參數(shù)(例如輸入密碼等高危操作)

    linux下c語言中隱藏進程命令行參數(shù)(例如輸入密碼等高危操作)

    啟動程序很多時候用命令行參數(shù)可以很方便,做到簡化一些配置,但是輸入用戶名密碼等操作,如果通過進程查看工具直接看到密碼就太不安全了,這里就為大家分享一下方法
    2021-01-01
  • C語言實現(xiàn)小學生隨機出題測試計分

    C語言實現(xiàn)小學生隨機出題測試計分

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)小學生隨機出題測試計分,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03

最新評論