C语言多字节和宽字节问题

关键函数 setlocale() 、wcstombs()、mbstowcs()

    
    
  //  char* setlocale (int category, const char* locale);

//setlocale位于头文件<locale.h>,setlocale() 函数既可以用来对当前程序进行地域设置(本地设置、区域设置)
//这是必须要写的否自会出现错误,或者程序不执行
    setlocale(LC_ALL, "chs");//设置影响的对象,其中第二个参数可以为""空字符串,其含义是使用默认系统的区域设置,当然“chs”表示中国区域,也可以打印返回值打印区域信息	
	wchar_t *str = L"dsjhfg中国";
	wcout << str << endl;
	char *buffer = new char[100];
	size_t len = wcstombs(NULL, str, 0);//将双字节字符串转化为多字节字符串,*dest_char *src_char int len(转化为dest_char字符的最大字符数)
	cout << len << endl;
	wcstombs(buffer, str, len+1);
	cout << buffer << endl;
	len = mbstowcs(NULL, buffer, 0);
	cout << len << endl;
	wchar_t *dest_buffer = new wchar_t[len+1];
	mbstowcs(dest_buffer, buffer, len);
	wcout << dest_buffer << endl;
	wcstombs(buffer, str, len + 1);
	system("pause");
	return 0;

参考链接[http://www.cppfans.com/cbknowledge/reference/cstdlib/mb_cur_max.asp
]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值