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++宽字节与多字节的转换相关推荐

  1. windows下宽字节和多字节的问题

    宽字节和多字节,一度是我的噩梦,明明是调用同一个API,但是最后的返回值一会是char *,一会又是wchar_t *,实属烦人. Windows中有两种编码格式: (1) ANSI/多字节编码(基本 ...

  2. mbstowcs 和 wcstombs函数:C语言提供的宽字符和多字节字符转换函数

    C语言中的多字节字符与宽字符 字符型char只占八位,存储ascii码的,而宽字符型是为了存储多国语言的代码unicode,包括中文,法语德语什么的,8位256种不够用了 C语言原本是在英文环境中设计 ...

  3. 通过编写串口助手工具学习MFC过程——(三)Unicode字符集的宽字符和多字节字符转换...

    通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个 ...

  4. 宽字节与多字节之间的转换

    string 与 wstring 相互间的转换 第一种方法 调用Windows的API函数WideCharToMultiByte()函数和MultiByteToWideChar()函数 第二种方法 使 ...

  5. 宽字节 多字节 单字节 的问题

    感觉比较混乱,学习了一通,做个记录. 着急在windows下面用的话,可以先看这个: VC++ Windows平台字符透明编程大总结 http://blog.csdn.net/hellothere/a ...

  6. c++多字节与宽字节字符串转换(windows平台)

    原文网址:http://www.asarea.me/showdiary.php?id=193 许久没有写技术日志了,今天写一篇关于字符串转换的. 大家都知道,在标准c++中有string和wstrin ...

  7. 多字节与宽字节的区别

    多字节与宽字节 string wstring 互转 多字节字符集(MBCS,Multi-Byte Chactacter Set): 指用多个字节来表示一个字符的字符编码集合.一般英文字母用1Byte, ...

  8. 单字节字符串、宽字符串和多字节字符串

    调查报告:了解单字节字符串.宽字符串 和多字节字符串等C/C++语言字符串表示方 法,总结其原理.存储.操作.应用等特 征,并编制报告. 单字节字符串(Single-Byte): 原理:每个字符用一个 ...

  9. A2W和W2A :很好的多字节和宽字节字符串的转换宏

    作者:朱金灿 来源:http://blog.csdn.net/clever101 以前看<Window核心编程>,感觉多字节和宽字节之间还比较麻烦的,至少MultiByteToWideCh ...

  10. C语言小算法:ACSII码(多字节)和Unicode(宽字节)互转

    C语言小算法:ACSII码(多字节)和Unicode(宽字节)互转 代码: #include <Windows.h> #include <stdio.h> #include & ...

最新文章

  1. pythonrequest爬取小说,pythonrequest爬取小说_python爬取斗破苍穹小说
  2. java中http解析url,java url 编码(解析http请求汉语言地址 )
  3. 计算机视觉研究群体及专家主页汇总
  4. 手把手教你使用C#操作SQLite数据库,新建数据库,创建表,插入,查询,删除,运算符,like...
  5. mysql数据库迁徙_mysql数据迁徙详解
  6. python之字符串操作
  7. Python——如何获得字符串的唯一编码
  8. XBMC Skinning Manual
  9. perl表达 匿名数组和匿名哈希
  10. do_initcalls 的原理
  11. 双线性函数matlab,双线性插值(Matlab实现)
  12. Android文件的读写
  13. 【STM32】MDK(keil5)编译后Program Size: Code=5230 RO-data=346 RW-data=52 ZI-data=1845代表什么意思--STM32选型
  14. 实现Android手机屏幕投影到电脑进行演示
  15. 接近开关 NPN PNP
  16. Unity学习笔记(7) Unity2D骨骼动画制作流程
  17. PCB设计中的的3W规则和20H原则
  18. c语言编程单片机中的sbit,单片机sfr和sbit的用法
  19. 如何从一台远程服务器向另一台远程服务器上读取文件
  20. 你猜,帕特∙基辛格、郭尊华、郭为、田溯宁为什么相视而笑?

热门文章

  1. python如何转换数据集_将数据集转换为HDF5数据
  2. redis循环键_javascript – for循环从redis延迟获取项目
  3. cad直线和圆弧倒角不相切_建议收藏:史上最全CAD快捷键大全
  4. macos server 恢复安装_Sinter:一款针对macOS的用户模式应用程序授权系统
  5. (2)I/O流对象-----FilterInputStream与FilterOutputStream
  6. 「洛谷3469」「POI2008」BLO-Blockade【Tarjan求割点】
  7. LESS+to+MCSS
  8. vue学习笔记—bootstrap+vue用户管理
  9. 13.solr学习速成之IK分词器
  10. codevs 1038 一元三次方程求解 NOIP2001提高组