c++宽字符和多字节字符相互转化类
来源:互联网 发布:阿里云为什么要装linux 编辑:程序博客网 时间:2024/05/15 15:41
多字节字符(multibyte character):每个字符可以是一到多个字节不等,而某个字节序列的字符值由字符串或流(stream)所在的环境背景决定。
宽字符:对宽字符的支持其实是ANSI C标准的一部分,用以支持多字节表示一个字符。宽字符和Unicode并不完全等同,Unicode只是宽字符的一种编码方式。在ANSI中,一个字符(char)的长度为一个字节(Byte)。使用Unicode时,一个字符占据一个字,C++在wchar.h头文件中定义了最基本的宽字符类型wchar_t :typedef unsigned short wchar_t;
宽字符的使用 :wchar_t *str1=L" 你好Hello"; 这个L非常重要,只有带上它,编译器才知道你要将字符串存成一个字符一个字。还要注意,在L和字符串之间不能有空格。
以下提供了了一个宽字符和多字节字符相互转化类:
class StringUnicode{public: static string FromUnicode(const wstring& str) { string desc; setlocale(LC_ALL,""); //设置本地默认 wcstombs(&desc[0],str.c_str(),sizeof(str) * 2); setlocale(LC_ALL,"C"); //用完恢复 return desc.c_str(); }; static wstring ToUnicode(const string& str) { wchar_t* data =new wchar_t[sizeof(str) * 2]; setlocale(LC_ALL,""); //设置本地默认 mbstowcs(data,str.c_str(),sizeof(str) * 2); setlocale(LC_ALL,"C"); //用完恢复 wstringtmp(data); delete data; returnt mp.c_str(); };};
标准 C++库中提供的一组多字节字符和宽字符相互转化的API(继承自C库):
mbtowc
Convert multibyte character to wide character (function)
wctomb
Convert wide character to multibyte character (function)
mbstowcs
Convert multibyte string to wide-character string (function)
wcstombs
Convert wide-character string to multibyte string (function)
在下面链接中有对字符集有更详尽的描述:
http://my.oschina.net/alphajay/blog/5691
- c++宽字符和多字节字符相互转化类
- Linux 多字节与宽字符的相互转化(类似MultiByteToWideChar和WideCharToMultiByte)
- C语言中宽字符和多字节字符
- VC++ 多字节宽字符相互转换
- 多字节与宽字符相互转换
- unicode字符和多字节字符的相互转换接口
- C++多字节字符与宽字节字符相互转换
- 宽字符和多字节字符
- 宽字符和多字节字符
- 宽字符和多字节字符
- 多字节字符和宽字符
- 多字节字符和宽字符
- vs 2010 多字节字符与宽字符的转化
- 短字符和宽字符的相互转化
- CString string 的相互转化,宽字符,多字符的转换
- C语言中的宽字符与多字节字符
- C语言中的宽字符与多字节字符[转]
- C/C++多字节字符与宽字符的输出
- scons使用说明
- php常用库函数
- Qt四舍五入取模取余操作
- sql语法
- 串口DB9引脚图
- c++宽字符和多字节字符相互转化类
- 系统何时触发onSaveInstanceState和onRestoreInstanceState
- TCP速率与窗口,带宽,RTT之间的关
- Android recovery 模式 中英文对照
- 怀孕过程中如何轻松跟宝宝对话?
- centos 6 yum 源设置
- Hibernate与JDBC事物的混用
- Eclipse安装svn插件
- javascript如何读取Json数据结构节点的值?