VC++ 多字节宽字符相互转换

本文详细介绍了在C++中将多字节字符转换为宽字符,及宽字符转换为多字节字符的方法,包括使用MultiByteToWideChar和WideCharToMultiByte函数的步骤与实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多字节宽字符相互转换用的较多,自己写了一点留作以后参考。

 

 

string str;
 
 cout<<"please input chinese"<<endl;
 cin>>str;
 //setlocale(LC_CTYPE,".chs");
 const char* cstr1 = str.c_str();
 //int len = 2*sizeof(cstr);
 
 int WLen = MultiByteToWideChar(CP_ACP,             // code page
                                   0,                // character-type options
           cstr1,              // string to map
                                   -1,                 // number of bytes in string
                                   NULL,            // wide-character buffer
                                   0                // size of buffer
);
    wchar_t * buffer = new wchar_t[WLen+1];
 int RetWLen = MultiByteToWideChar(CP_ACP,             // code page
                                   0,                // character-type options
           cstr1,              // string to map
                                   -1,                 // number of bytes in string
                                   buffer,            // wide-character buffer
                                   WLen                // size of buffer
);
 buffer[WLen] = '/0';
printf("/nthe translated num is %d",RetWLen);

-----------------------------------------------------

------------------------------------------------------

---------------------------------------------------------

--------------------------------------------------------

同理 宽字符到多字节
 int MLen = WideCharToMultiByte(
                                   CP_ACP,            // code page
                                   0,            // performance and mapping flags
                                   buffer,    // wide-character string
                                   -1,          // number of chars in string
                                   NULL,     // buffer for new string
                                   0,          // size of buffer
                                   NULL,     // default for unmappable chars
                                   NULL  // set when default char used
); //这里第六个参数若为0 表示 返回 宽字符对应多字节的长度
 char* MultiBte = new char[MLen+1]; 
 int RetMLen = WideCharToMultiByte(
                                   CP_ACP,            // code page
                                   0,            // performance and mapping flags
                                   buffer,    // wide-character string
                                   -1,          // number of chars in string
                                   MultiBte,     // buffer for new string
                                   MLen,          // size of buffer
                                   NULL,     // default for unmappable chars
                                   NULL  // set when default char used
); //完成转换
printf("/nthe translated MultiByte num is :%d",RetMLen);
printf("/nthe Multibyte value:");
MultiBte[MLen]='/x0';
fputs(MultiBte,stdout); //可直接在终端输出

 头文件 windows.h

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值