构造UTF8的std::string
来源:互联网 发布:怎么在淘宝天猫开店 编辑:程序博客网 时间:2024/05/19 23:04
在VC++的世界里,MS比较鼓励使用_UNICODE,std::wstring。而在Web, XML则提倡用UTF8。当在C++的程序里要保存/读取XML数据,就存在wstring与string之间的转换。C++11里提供方便的转换工具(参照:std::wstring_convert处理UTF8 )
有人说,MS引入_UNICODE就是个错误,STL引入wstring也是个错误;而鼓励使用UTF8 string做为程序内部string存储格式。在与GUI交互的时候,转换为wstring(假定GUI使用的是_UNICODE)。这样做至少有一个好处:相对的可以减少程序运行时占用内存的大小。当然现在内存资源也不是个什么大问题,我更关心的是保存/读取XML数据的效率。
VC++默认构造std::string的时候是ANSI格式,如
为了构造个UTF8的string,总不能这样写吧
这样写能Work,但总感觉有问题。
VC++ 2008 SP1提供了个编译选项,可以默认就构造出UTF8的string,不需要上述转换。
这样string就是utf8。
那wstring的编码格式会变吗?若变,会变成啥呢?
另外C++11定义了u8,类似L
注:
以上说的都是VC++的事儿。而Clang,据说默认就是utf8(有待验证)。
有人说,MS引入_UNICODE就是个错误,STL引入wstring也是个错误;而鼓励使用UTF8 string做为程序内部string存储格式。在与GUI交互的时候,转换为wstring(假定GUI使用的是_UNICODE)。这样做至少有一个好处:相对的可以减少程序运行时占用内存的大小。当然现在内存资源也不是个什么大问题,我更关心的是保存/读取XML数据的效率。
VC++默认构造std::string的时候是ANSI格式,如
std::string nstr = "123,我是谁?我爱十八大!";
为了构造个UTF8的string,总不能这样写吧
inline std::string ToUTF8(const wchar_t* wideStr)
{
std::wstring_convert<std::codecvt_utf8<wchar_t>> conv;
return conv.to_bytes(wideStr);
}
std::string nstr = ToUTF8(L"123,我是谁?我爱十八大!");
{
std::wstring_convert<std::codecvt_utf8<wchar_t>> conv;
return conv.to_bytes(wideStr);
}
std::string nstr = ToUTF8(L"123,我是谁?我爱十八大!");
这样写能Work,但总感觉有问题。
VC++ 2008 SP1提供了个编译选项,可以默认就构造出UTF8的string,不需要上述转换。
#pragma execution_character_set("utf-8")
这样string就是utf8。
那wstring的编码格式会变吗?若变,会变成啥呢?
std::wstring str = L"123,我是谁?";
另外C++11定义了u8,类似L
std::string nstr = u8"123,我是谁?";
但VS2010SP1并不支持。
但VS2010SP1并不支持。
注:
以上说的都是VC++的事儿。而Clang,据说默认就是utf8(有待验证)。
- 构造UTF8的std::string
- 构造UTF8的std::string
- std::string 的构造函数
- .std::string转utf8字符串
- ANSI与UTF8之间的转换!std::string与UTF8之间的转换
- utf8与std::string字符编码转换
- c++ utf8与std::string字符编码转换
- c++ utf8与std::string字符编码转换
- std::string的用法
- 全局的std::string
- std::string的用法
- std::string的用法 .
- std::vector到std::string的转换
- std::string、std::wstring的关系
- std::string的基本用法
- std::string的工具函数
- std::string的工具函数
- std string 的常用使用
- websphere和weblogic
- 斐波那契数
- To be a great company like IBM,Apple,GM and so on云计算中心
- 个人网站搭建---godaddy域名+freewebhostingarea免费空间
- std::wstring_convert处理UTF8
- 构造UTF8的std::string
- Android应用开发经典面试题
- 新的文章
- position的absolute属性
- TTL与CMOS 高低电平 电路区别比较
- 初学c++
- Nib Loading and Memory Management
- unix重定向
- 博客开通第一贴