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

C++ string和wstring相互轉(zhuǎn)換方式

 更新時間:2023年02月28日 10:34:28   作者:Jimmy1224  
這篇文章主要介紹了C++ string和wstring相互轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

在C++項目編程中,由于項目工程被設(shè)置為Unicode編碼,因此經(jīng)常遇到std::string類型和std::wstring類型相互轉(zhuǎn)換的場景,現(xiàn)在將轉(zhuǎn)換方法分享給大家:

%S和%s用法

%s和%S都是格式化控制符,輸出字符串類型。

但應(yīng)用寬字符函數(shù)和窄字符函數(shù)卻又一定的區(qū)別,我們針對printf函數(shù)以及wprintf函數(shù)進(jìn)行說明:

針對窄字符函數(shù),例如printf,sprintf函數(shù)而言:

  • %s 是指以窄字符方式輸出字符串
  • %S 是指以寬字符方式輸出字符串

針對寬字符函數(shù),例如wprintf,swprintf函數(shù)而言,其作用恰恰相反:

  • %s 是指以寬字符方式輸出字符串
  • %S 是指以窄字符方式輸出字符串

總結(jié)起來就是%s是本身函數(shù)的字符類型,%S是本身函數(shù)類型的相反字符編碼。

//輸出窄字符
printf("ascii string=%s\n","hello world");
//輸出寬字符
printf("unicode string=%S\n",L"hello world");

//輸出寬字符
wprintf(L"ascii string=%s\n",L"hello world");
//輸出窄字符
wprintf(L"unicode string=%S\n","hello world");

string和wstring轉(zhuǎn)換方法

轉(zhuǎn)換源碼如下,需要說明的是這里不支持中文類型轉(zhuǎn)換。

#include <string>
#include <Windows.h>
#include <new>

//wstring類型轉(zhuǎn)換為string類型
std::string GetStringByWchar(const WCHAR* wszString)
{
? ? ?std::string strString;?
? ? ?if (wszString != NULL)
? ? ?{
? ? ? ? ?std::wstring ws(wszString);
? ? ? ? ?strString.assign(ws.begin(), ws.end());
? ? ?}

? ? ?return strString;
}

//string類型轉(zhuǎn)換為wstring類型
std::wstring GetWStringByChar(const char* szString)
{
? ? std::wstring wstrString;
? ? if (szString != NULL)
? ? {
? ? ? ? std::string str(szString);
? ? ? ? wstrString.assign(str.begin(), str.end());
? ? }

? ? return wstrString;?
}

void Test()
{
? ? std::wstring wstrCHar = L"hell world";
? ? std::string strChar = "hell world";
? ? printf("ret string=%s\n",GetStringByWchar(wstrCHar.c_str()).c_str());
? ? printf("ret wstring=%S\n",GetWStringByChar(strChar.c_str()).c_str());
? ? wprintf(L"ret wstring=%s\n",GetWStringByChar(strChar.c_str()).c_str());
}

運行結(jié)果:

ret string=hell world

ret wstring=hell world
ret wstring=hell world
請按任意鍵繼續(xù). . .

總結(jié)

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

相關(guān)文章

  • 詳解C語言中g(shù)etgid()函數(shù)和getegid()函數(shù)的區(qū)別

    詳解C語言中g(shù)etgid()函數(shù)和getegid()函數(shù)的區(qū)別

    這篇文章主要介紹了詳解C語言中g(shù)etgid()函數(shù)和getegid()函數(shù)的區(qū)別,注意getegid只返回有效的組識別碼,需要的朋友可以參考下
    2015-08-08
  • c# 實現(xiàn)獲取漢字十六進(jìn)制Unicode編碼字符串的實例

    c# 實現(xiàn)獲取漢字十六進(jìn)制Unicode編碼字符串的實例

    下面小編就為大家?guī)硪黄猚# 實現(xiàn)獲取漢字十六進(jìn)制Unicode編碼字符串的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • 提高C程序效率的10種有效方法

    提高C程序效率的10種有效方法

    本文向你介紹規(guī)范你的C代碼的10種方法。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10
  • vscode配置gitbash終端的方法步驟

    vscode配置gitbash終端的方法步驟

    本文主要介紹了vscode配置gitbash終端的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • C++實現(xiàn)LeetCode(73.矩陣賦零)

    C++實現(xiàn)LeetCode(73.矩陣賦零)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(73.矩陣賦零),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++實現(xiàn)簡單版圖書管理系統(tǒng)

    C++實現(xiàn)簡單版圖書管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)簡單版圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C語言實現(xiàn)順序表的順序查找和折半查找

    C語言實現(xiàn)順序表的順序查找和折半查找

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)順序表的順序查找和折半查找,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • C++面試八股文之了解auto關(guān)鍵字

    C++面試八股文之了解auto關(guān)鍵字

    這篇文章主要為大家介紹了C++面試八股文之了解auto關(guān)鍵字問題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • C語言運用回調(diào)函數(shù)實現(xiàn)計算器

    C語言運用回調(diào)函數(shù)實現(xiàn)計算器

    這篇文章主要為大家詳細(xì)介紹了C語言運用回調(diào)函數(shù)實現(xiàn)計算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C++?Qt開發(fā)之使用QNetworkAccessManager實現(xiàn)Web網(wǎng)頁訪問

    C++?Qt開發(fā)之使用QNetworkAccessManager實現(xiàn)Web網(wǎng)頁訪問

    Qt?是一個跨平臺C++圖形界面開發(fā)庫,利用Qt可以快速開發(fā)跨平臺窗體應(yīng)用程序,本文主要介紹了如何運用QNetworkAccessManager組件實現(xiàn)Web網(wǎng)頁訪問,需要的可以參考下
    2024-03-03

最新評論