标准c /c++宽字节与多字节的转换
c/c++中字节的转换一直是一个琐碎的工作,在windows下与标准c/c++之间也存在区别,下面总结的方法估计还存在部分问题。
1.在windows环境下提供了宽字节与多字节的转换,如下方法:
宽字节->多字节: WideCharToMultiByte
char* WcharToChar(const wchar_t* wp)
{char *m_char;int len = WideCharToMultiByte(CP_ACP, 0, wp, wcslen(wp), NULL, 0, NULL, NULL);m_char = new char[len + 1];WideCharToMultiByte(CP_ACP, 0, wp, wcslen(wp), m_char, len, NULL, NULL);m_char[len] = '\0';return m_char;
}
多字节->宽字节 : MultiByteToWideChar
wchar_t* CharToWchar(const char *str)
{if(str == 0){return 0;}wchar_t* m_wchar; int len = MultiByteToWideChar(CP_ACP,0,str,-1,NULL,0); m_wchar=new wchar_t[len+1]; MultiByteToWideChar(CP_ACP,0,str,-1,m_wchar,len); m_wchar[len]='\0';return m_wchar;
}
2.在标准c/c++中转换:
需要包含:#include <stdlib.h>
宽字节->多字节(wcstombs_s)
//宽字节转多字节(wchar-char)
char* IniFileSTL::WcharToChar(const wchar_t* wp)
{locale old_loc = locale::global(locale("")); //使用当前系统的语言区域设置size_t len = wcslen(wp)*sizeof(wchar_t);size_t converted=0; //converted记录转换的字符数量char*CStr;CStr=(char*)malloc(len); //此处申请的空间需要自己外部释放wcstombs_s(&converted,CStr,len,wp,_TRUNCATE);locale::global(old_loc); //还原默认的语言区域设置return CStr;
}
多字节->宽字节(mbstowcs_s)
//多字节转宽字节(char-wchar)
wchar_t* IniFileSTL::CharToWchar(const char* cp)
{locale old_loc = locale::global(locale(""));size_t len = strlen(cp)*sizeof(char);size_t converted=0;wchar_t *WStr;WStr=(wchar_t*)malloc(2*len); //注意大小,只能大,不能小,不然会溢出mbstowcs_s(&converted,WStr,len,cp,_TRUNCATE);locale::global(old_loc);return WStr;
}
标准c /c++宽字节与多字节的转换相关推荐
- windows下宽字节和多字节的问题
宽字节和多字节,一度是我的噩梦,明明是调用同一个API,但是最后的返回值一会是char *,一会又是wchar_t *,实属烦人. Windows中有两种编码格式: (1) ANSI/多字节编码(基本 ...
- mbstowcs 和 wcstombs函数:C语言提供的宽字符和多字节字符转换函数
C语言中的多字节字符与宽字符 字符型char只占八位,存储ascii码的,而宽字符型是为了存储多国语言的代码unicode,包括中文,法语德语什么的,8位256种不够用了 C语言原本是在英文环境中设计 ...
- 通过编写串口助手工具学习MFC过程——(三)Unicode字符集的宽字符和多字节字符转换...
通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个 ...
- 宽字节与多字节之间的转换
string 与 wstring 相互间的转换 第一种方法 调用Windows的API函数WideCharToMultiByte()函数和MultiByteToWideChar()函数 第二种方法 使 ...
- 宽字节 多字节 单字节 的问题
感觉比较混乱,学习了一通,做个记录. 着急在windows下面用的话,可以先看这个: VC++ Windows平台字符透明编程大总结 http://blog.csdn.net/hellothere/a ...
- c++多字节与宽字节字符串转换(windows平台)
原文网址:http://www.asarea.me/showdiary.php?id=193 许久没有写技术日志了,今天写一篇关于字符串转换的. 大家都知道,在标准c++中有string和wstrin ...
- 多字节与宽字节的区别
多字节与宽字节 string wstring 互转 多字节字符集(MBCS,Multi-Byte Chactacter Set): 指用多个字节来表示一个字符的字符编码集合.一般英文字母用1Byte, ...
- 单字节字符串、宽字符串和多字节字符串
调查报告:了解单字节字符串.宽字符串 和多字节字符串等C/C++语言字符串表示方 法,总结其原理.存储.操作.应用等特 征,并编制报告. 单字节字符串(Single-Byte): 原理:每个字符用一个 ...
- A2W和W2A :很好的多字节和宽字节字符串的转换宏
作者:朱金灿 来源:http://blog.csdn.net/clever101 以前看<Window核心编程>,感觉多字节和宽字节之间还比较麻烦的,至少MultiByteToWideCh ...
- C语言小算法:ACSII码(多字节)和Unicode(宽字节)互转
C语言小算法:ACSII码(多字节)和Unicode(宽字节)互转 代码: #include <Windows.h> #include <stdio.h> #include & ...
最新文章
- pythonrequest爬取小说,pythonrequest爬取小说_python爬取斗破苍穹小说
- java中http解析url,java url 编码(解析http请求汉语言地址 )
- 计算机视觉研究群体及专家主页汇总
- 手把手教你使用C#操作SQLite数据库,新建数据库,创建表,插入,查询,删除,运算符,like...
- mysql数据库迁徙_mysql数据迁徙详解
- python之字符串操作
- Python——如何获得字符串的唯一编码
- XBMC Skinning Manual
- perl表达 匿名数组和匿名哈希
- do_initcalls 的原理
- 双线性函数matlab,双线性插值(Matlab实现)
- Android文件的读写
- 【STM32】MDK(keil5)编译后Program Size: Code=5230 RO-data=346 RW-data=52 ZI-data=1845代表什么意思--STM32选型
- 实现Android手机屏幕投影到电脑进行演示
- 接近开关 NPN PNP
- Unity学习笔记(7) Unity2D骨骼动画制作流程
- PCB设计中的的3W规则和20H原则
- c语言编程单片机中的sbit,单片机sfr和sbit的用法
- 如何从一台远程服务器向另一台远程服务器上读取文件
- 你猜,帕特∙基辛格、郭尊华、郭为、田溯宁为什么相视而笑?
热门文章
- python如何转换数据集_将数据集转换为HDF5数据
- redis循环键_javascript – for循环从redis延迟获取项目
- cad直线和圆弧倒角不相切_建议收藏:史上最全CAD快捷键大全
- macos server 恢复安装_Sinter:一款针对macOS的用户模式应用程序授权系统
- (2)I/O流对象-----FilterInputStream与FilterOutputStream
- 「洛谷3469」「POI2008」BLO-Blockade【Tarjan求割点】
- LESS+to+MCSS
- vue学习笔记—bootstrap+vue用户管理
- 13.solr学习速成之IK分词器
- codevs 1038 一元三次方程求解 NOIP2001提高组