把char*转换为wchar_t*

原创 2015年07月09日 13:40:09

char*转换为wchar_t*

stdlib.h中的mbstowcs_s函数,可以通过下面的例子了解其用法:

 

char *CStr = "string to convert";

size_t len = strlen(CStr) + 1;

size_t converted = 0;

wchar_t *WStr;

WStr=(wchar_t*)malloc(len*sizeof(wchar_t));

mbstowcs_s(&converted, WStr, len, CStr, _TRUNCATE);

 

其结果是WStr中储存了CStrwchar_t版本。

 

wchar_t*转换为char*

和上面的方法类似,用stdlib.h中的wcstombs_s函数,例子:

 

wchar_t *WStr = L"string to convert";

size_t len = wcslen(WStr) + 1;

size_t converted = 0;

char *CStr;

CStr=(char*)malloc(len*sizeof(char));

wcstombs_s(&converted, CStr, len, WStr, _TRUNCATE);

 

这时WStr中的内容将被转化为char版本储存在CStr中。

 

另外还可以通过流的方法来char*类型转换为wchar_t*类型,但这样的转换得到的结果将是const类型,而类似的方法不能将wchar_t*类型转换为char*类型。

 

把(constchar*转换为const wchar_t*

需要用到 sstream 头文件:

 

char *cstr="string to convert";

wstringstream wss;

wss<<cstr;

 

再调用wss.str().c_str(); 即可得到 const wchar_t* 类型的返回值。

 

虽然stringstream流不能将wchar_t*转换成char*,但可以用来进行数值类型和字符串之间的转换,例如:

 

double d=2734792.934f;

stringstream ss;

ss<<d;

 

调用ss.str()可得到string类型字符串 ”273479e+006”,又如:

 

string str("299792458");

stringstream ss;

long i=0;

ss<<str;

ss>>i;

 

此时i=299792458


版权声明:本文为博主原创文章,未经博主允许不得转载。

C++ WINDOWS下 wchar_t *和char * 相互转化总结篇

说道wchar_t和char两个类型大家都不会陌生 wchar_t:在windows下是Unicode 16编码,也就是俗称宽字节 char:当然就是指一个字节,在windows下面默认是gbk编码的...
  • lightspear
  • lightspear
  • 2017年01月23日 18:37
  • 5225

wchar_t和char,WCHAR和CHAR的区别和互相转化

win32应用程序的低层winnt.h头文件: #ifndef VOID #define VOID void typedef char CHAR; typedef short SHORT; ...
  • xukaiwen_2016
  • xukaiwen_2016
  • 2016年07月31日 14:18
  • 5170

宽字符wchar_t和窄字符char区别和相互转换

1.    首先,说下窄字符char了,大家都很清楚,就是8bit表示的byte,长度固定。char字符只能表示ASII码表中的256个字符,包括前128个可见字符和后面的128个不可见字符。    ...
  • nodeathphoenix
  • nodeathphoenix
  • 2012年03月31日 18:28
  • 38362

C++中char*与wchar_t*之间的转换

代码编译运行环境:VC++2012+Debug+Win321.问题描述char字符与wchar_t字符由于编码不同,所以在char*和wchar_t*之间使用强制类型转换达不到正确转换字符串的目的。考...
  • K346K346
  • K346K346
  • 2015年11月28日 11:46
  • 7056

wchar_t*和char*之间的互相转换的那些事

http://blog.csdn.net/hellward/article/details/5364927 最近在看一写PE文件格式的东西,想做一个读取PE文件信息的小工具,中间遇到将LPVOI...
  • lanshengsheng2012
  • lanshengsheng2012
  • 2014年05月29日 17:45
  • 5411

彻底搞定char/wchar_t!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

从char/wchar_t到TCHAR(1)(发表时间: 2008-4-26 0:54:00) 【评论】 【打印】 【字体:大 中 小】 本文链接:http://blog.pfan.cn/x...
  • m0_37343248
  • m0_37343248
  • 2017年02月20日 09:00
  • 1027

wchar_t char string wstring 之间的转换

在处理中文时有时需要进行wchar_t,char,string,wstring之间的转换。 其中char和string之间、wchar_t和wstring之间的转换较为简单,代码在vs2010下测试...
  • lbd2008
  • lbd2008
  • 2012年12月19日 21:54
  • 12776

char 转wchar_t 及wchar_t转char

  • 2013年07月18日 11:07
  • 4KB
  • 下载

char与wchar_t函数对照表

#include #include 1、把多字符把转换成宽字符_CRTIMP size_t __cdecl mbstowcs(wchar_t *, const wchar* ,size_t);...
  • tianxiayijia1998
  • tianxiayijia1998
  • 2015年11月21日 19:46
  • 1510

vs2010提示error C2440: “=”: 无法从“wchar_t *”转换为“char *”,求解

CString::GetBuffer()返回的类型是LPTSTR。 我们查看LPTSTR的定义: #ifdef  UNICODE                     // r_winnt ...
  • Andy20081251
  • Andy20081251
  • 2014年03月27日 14:19
  • 3313
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:把char*转换为wchar_t*
举报原因:
原因补充:

(最多只允许输入30个字)