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 this
const 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 );

三种方法都可以.

参考技术C C++标准中,wchar_t是宽字符类型,每个wchar_t类型占2个字节,16位宽。汉字的表示就要用到wchar_t 。char,我们都知道,占一个字节,8位宽。其实知道了这个以后,要在wchar_t 和 char两种类型之间转换就不难实现了。

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 可以用for
char 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字符串?的主要内容,如果未能解决你的问题,请参考以下文章

C++中的WCHAR_T怎么转化成CHAR?

C++中,如何讲CHAR数组转换成FLOAT型数据。

为啥下面的 C++ 代码只打印第一个字符?

在 C 中将 char* 转换为 wchar*

c++中wchar转char

用C++如何将一个整数转换成一个IP地址?