问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

win32控制台里 wchar_t字符串转成char数组!2

发布网友 发布时间:2023-10-09 10:09

我来回答

4个回答

热心网友 时间:2024-12-13 09:08

微软对中文编码很扯淡,给你写段能用的

#include <stdio.h>

#include <stdlib.h>

#include <assert.h>

#include <Windows.h>

 

int main( void )

{

 

 wchar_t *src = L"adf中国ad";

 char * des = NULL;

 int len= WideCharToMultiByte(CP_ACP,0,src,wcslen(src),NULL,0,NULL,NULL);

 des=(char *)malloc(sizeof(char) * (len + 1));

 WideCharToMultiByte(CP_ACP,0,src,wcslen(src),des,len,NULL,NULL); 

 des[len] = '\0';

 printf("%s", des);

 getchar();

 free(des);

 return 0;

}

 

来自:求助得到的回答

热心网友 时间:2024-12-13 09:08

char型的数据,占用一个字节空间。
wchar_t的数据,占用多个字节空间。
从存储空间大小来看,char型的可以直接转换为wchar_t,但是如果两个字节的wchar_t要转换为单个字节的char型是需要舍弃一个字节的,这样会导致数据丢失,因此,是无法转换为char型数据的。wchar_t只可以转换为char型数组。
char转换为wchar_t,可以强制转换即可。如
char a;
wchar_t b;
b=(wchar_t)a;
而wchar_t转换为char型数组时可以使用内存复制memcpy函数。如:
char a[2];
wchar_t b;
memcpy(a,&b,sizeof(b));

热心网友 时间:2024-12-13 09:09

VC++自己的示例size_t wcrtomb(
char *mbchar,
wchar_t wchar,
mbstate_t *mbstate
);
template <size_t size>
size_t wcrtomb(
char (&mbchar)[size],
wchar_t wchar,
mbstate_t *mbstate
); // C++ only// crt_wcrtomb.c
// compile with: /W3
// This program converts a wide character
// to its corresponding multibyte character.

#include <string.h>
#include <stdio.h>
#include <wchar.h>

int main( void )
{
size_t sizeOfCovertion = 0;
mbstate_t mbstate;
char mbStr = 0;
wchar_t* wcStr = L"Q";

// Reset to initial conversion state
memset(&mbstate, 0, sizeof(mbstate));

sizeOfCovertion = wcrtomb(&mbStr, *wcStr, &mbstate); // C4996
// Note: wcrtomb is deprecated; consider using wcrtomb_s instead
if (sizeOfCovertion > 0)
{
printf("The corresponding wide character \"");
wprintf(L"%s\"", wcStr);
printf(" was converted to the \"%c\" ", mbStr);
printf("multibyte character.\n");
}
else
{
printf("No corresponding multibyte character "
"was found.\n");
}
}

热心网友 时间:2024-12-13 09:09

WideCharToMultiByte吧追问不会用这个函数!求指导

追答WideCharToMultiByte(CP_ACP, 0, lujing, -1, mnv, sizeof(mnv), NULL, NULL);这样应该可以了。wchar_t lujing[]="1223333中文"; 这里应该是这样吧
看看参考资料吧,刚看到的

参考资料:http://www.cnblogs.com/gakusei/articles/1585211.html

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
人字梯有什么安全隐患吗 怎样激发青春期孩子的内驱力 如何激发青春期孩子的内驱力 ...小题1:移船相近邀相见,添酒回灯重开宴。 , &amp;n... L1和L2串联 电压表并联在L1两端 当L1断路后 电压表测的为什么就成了电源... L1和L2串联,用电压表测L1两端的电压,L2不亮时,电流表为什么测的是电源电... 电路上传连两个灯泡L1与L2电压表测L1电压,当L1短路与断路时电压表情况... 对方拖着不办离婚手续该怎么办 计算机一级电子表格怎么拿分 如何配置思源黑体为latex中文字体? 思源黑体字体怎么安装 写写粉面含春威不露,丹唇未启笑先闻的意思120 vs2010开发环境,MFC编程,const char*、C... 在vs中char类型的实参与LPCWSTR类型的形参类型不兼...47 红楼梦中&quot;粉面含春威不露,丹唇未启笑先闻&quot;描述的是谁3 vc++2010中const char* 不能初始化cons...9 VS2010中比如一个函数的返回值是char * 但是我如何... 红楼梦中粉面含春威不露 丹唇未启笑先闻是什么意思203 粉面含春威不露 丹唇未启笑先闻的闻是什么意思26 粉面含春威不露,丹唇未起笑先闻是什么意思1588 “粉面含春威不露,单唇未启笑先闻”刻画的人物形象是谁? 面粉含春威不漏,丹唇未启笑先闻 描写的是谁出场47 粉面含春威不露,丹唇未启笑先闻。刻画的是谁,出自哪? 苹果手机会贬值吗?如题 谢谢了 中国商品信息服务平台的条形码怎么生成?已经有数字了,但是没有... 苹果发布新品后,上一代产品官网价格骤降,苹果是不是贬值大佬? 相同价格买安卓手机好还是苹果手机好?149 苹果手机,相比其他手机,好在什么地方?全面点!251 在中国商品信息服务平台怎么激活条码卡59 iPhone 为什么比安卓保值2 产品的条码制定以后,如果不在中国商品信息服务平台上备案,有什...3 考研准考证号写错了,能查试卷吗1 vs2010中c&#47;C++的问题 今年考研的英语和政治的准考证号都填涂写错,成绩会是零分吗?请... 考研时填错了准考证号,还会有成绩吗 我朋友考研机读卡上的准考证号写错了,也涂错了。但是外面密封垫...2 急!!在线等!!考研政治准考证写错涂错了!!还有办法补救吗?8 我快乐的童年,作文20 考研英语政治准考证号都填错涂错一位,到底会不会0分?11 作文 快乐的童年 500字—600字356 你好 我今年考研 机读卡上准考证号填对了 但是涂错落 请问可... 别了,我的qq作文600字3 为什么我在IE浏览器上打开网址的时候就自动跳到火狐浏览器??... 设置了火狐作为默认浏览器,但是,打开网页还是默认IE 用火狐浏览器打开网页为什么比用IE浏览器打开网页快?9 为什么我做的网页在ie能正常打开 在火狐却显示的内容不一样5 为什么有的网站用ie能打开 用火狐打不开1 脸上总是长痘痘,如何能更好的祛痘? 脸上总是长痘痘,如何才能更好的祛痘? 脸上总是长痘痘,有什么办法能更好的祛痘? 脸上总是长痘痘,用怎样的方法能更好的祛痘吗?