手机
当前位置:查字典教程网 >编程开发 >C语言 >wchar_t,char,string,wstring之间的相互转换
wchar_t,char,string,wstring之间的相互转换
摘要:在处理中文时有时需要进行wchar_t,char,string,wstring之间的转换。其中char和string之间、wchar_t和w...

在处理中文时有时需要进行wchar_t,char,string,wstring之间的转换。

其中char和string之间、wchar_t和wstring之间的转换较为简单,代码在vs2010下测试通过。

复制代码 代码如下:

#include <iostream>

#include <string>

#include <tchar.h>

#include <Windows.h>

using namespace std;

//ConvertingaWCharstringtoaAnsistring

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;

}

【wchar_t,char,string,wstring之间的相互转换】相关文章:

string与char*转换的使用详解

NSString与C字符串之间的相互转换

你必须知道的C语言预处理的问题详解

C语言中const,volatile,restrict的用法总结

深入理解c++中char*与wchar_t*与string以及wstring之间的相互转换

strncpy与snprintf 的用法比较

c++中string类成员函数c_str()的用法

char str[] 与 char *str的区别详细解析

string,CString,char*之间的转化

C++中Overload,Override,Hide之间的区别

精品推荐
分类导航