C++中怎么将WCHAR字符串转换成CHAR字符串?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中怎么将WCHAR字符串转换成CHAR字符串?相关的知识,希望对你有一定的参考价值。
最好方法简单一点~
C++中将WCHAR字符串转换成CHAR字符串:
#include<comdef.h>//youwillneedthis
constWCHAR*wc=L"HelloWorld";
_bstr_tb(wc);
constchar*c=b;
printf("Output:%s\\n",c);
扩展资料
char转wchar
constwchar_t*GetWC(constchar*c)
constsize_tcSize=strlen(c)+1;
wchar_t*wc=newwchar_t[cSize];
mbstowcs(wc,c,cSize);
returnwc;
参考技术A字符转换的几个问题思考
划红线的句子可要慎重啊!
这个转换绝对没有想象的那么简单:
首先你这个转换需不需要跨平台?
其次你这个转换考虑不考虑效率和代码大小?
再次你这个转换要处理的对象:英文?汉字?英文+汉字?英文+汉字+日语+火星文?
参考技术B #include <comdef.h> // you will need thisconst WCHAR* wc = L"Hello World" ;
_bstr_t b(wc);
const char* c = b;
printf("Output: %s\\n", c);USES_CONVERSION;
WCHAR* wc = L"Hello World" ;char* c = W2A(wc);char output[256];
WCHAR* wc = L"Hellow World" ;
sprintf(output, "%ws", wc );
三种方法都可以.
wchar_t 转换为char 的代码如下:
有如下的wchar_t和char变量
wchar_t w_cn = '中';
char c_cn[2] = '0' ;
char *C2W(wchar_t w_cn , char c_cn[2])
//following code convert wchar to char
c_cn[0] = w_cn >> 8 ;
c_cn[1] = w_cn ;
c_cn[2] = '\0';
return c_cn ;
其中需要注意的是一个16位的wchar_t需要用两个8位的char来存储之。我们可以发现另外一个问题,wchar_t的高位字节应该存储在char数组的低位字节。(这里没有仔细研究了,觉得怪怪的)。
这是完成了wchar_t到char的转化
在C++中,如何把字节数组转换成字符串
字节数组转化为字符串数组只需要做一个判断:检查字节数组最后一个字节是否为0,如果是,则直接复制。否则则需要追加一个为0的字节到末位。示例代码如下:
char* toString(char* data,size_t len,char* str,size_t strLen)//注意strLen>len否则函数结果不可知
if(data[len-1]==0)
strcpy(str,data);
else
memcpy(str,data,len);
str[len]=0;
return str;
参考技术A 在这个数组的最后加一个字节'\0'就变成了char字符串。如果原数组的大小最后没有空位,那就得另声明一个大一点的char数组,然后在最后加一个'\0'。如果是要转换成string型字符串,那如下就行了:
char a[20]='1','s','o';
for(int i=0;i<n;i++)//n是原字符串的长度
string str+=a[i];
这样就把原来的字符数组a里的元素转换成string型字符串str了……追问
我下节课试试着好吧
参考技术B 可以用forchar a[100];
String str;
for(int i=0;i<n;i++)
str[i]=a[i]; 参考技术C char array[]="qwertyuiop";
string str(array); 参考技术D DataIn是BYTE型数组
CString str = CString(DataIn)
以上是关于C++中怎么将WCHAR字符串转换成CHAR字符串?的主要内容,如果未能解决你的问题,请参考以下文章