国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

wchar_t,char,string,wstring之間的相互轉換

2020-01-26 15:47:50
字體:
來源:轉載
供稿:網友

在處理中文時有時需要進行wchar_t,char,string,wstring之間的轉換。

其中char和string之間、wchar_t和wstring之間的轉換較為簡單,代碼在vs2010下測試通過。

復制代碼 代碼如下:

#include <iostream>
#include <string>
#include <tchar.h>
#include <Windows.h>

using namespace std;

//Converting a WChar string to a Ansi string
char *w2c(char *pcstr,const wchar_t *pwstr, size_t len)
{
 int nlength=wcslen(pwstr);
 //獲取轉換后的長度
 int nbytes = WideCharToMultiByte( 0, 0, pwstr, nlength, NULL,0,NULL, NULL );
 if(nbytes>len)   nbytes=len;
 // 通過以上得到的結果,轉換unicode 字符為ascii 字符
 WideCharToMultiByte( 0,0, pwstr, nlength,   pcstr, nbytes, NULL,   NULL );
 return pcstr ;
}

int main(){

 setlocale(LC_ALL,"chs");
 char* cc = "this is a char 測試";
 wchar_t* wcc = L"this is a wchar 測試";
 string str("this is a string 測試 ");
 wstring wstr = L"this is a wstring 測試";


 //string to char
 const char* char_test = str.c_str();
 //cout<<"char_test:"<<char_test<<endl;

 //char to string
 string ss = cc;
 //cout<<"ss is :"<<ss<<endl;

 //wstring to wchar
 const wchar_t* wchar_test = wstr.c_str();
 //wcout<<wchar_test<<endl;

 //wchar to wstring
 wstring wss = wcc;
 wcout<<wcc<<endl;

 //char to wchar_t
 wchar_t *wc = new wchar_t[str.size()+1];
 //swprintf(wc,L"%S",cc);
 //wcout<<cc<<endl;
 delete []wc;

 // wchar_t to char
 char *pcstr = (char *)malloc(sizeof(char)*(2 * wcslen(wcc)+1));
 memset(pcstr , 0 , 2 * wcslen(wcc)+1 );
 w2c(pcstr,wcc,2 * wcslen(wcc)+1) ;
 free(pcstr);

 system("pause");
 return 1;
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 麦盖提县| 新源县| 琼中| 屏边| 喀喇沁旗| 宝清县| 英吉沙县| 兴国县| 巢湖市| 房山区| 孝昌县| 武夷山市| 长宁区| 缙云县| 永修县| 淮安市| 临夏市| 彭山县| 中宁县| 广南县| 新乡市| 靖江市| 武威市| 如皋市| 霍林郭勒市| 嵊泗县| 湖南省| 丰台区| 福鼎市| 潮安县| 墨江| 通渭县| 隆安县| 青川县| 陕西省| 阳春市| 调兵山市| 明光市| 仁寿县| 黔江区| 台中市|