构造UTF8的std::string
来源:互联网 发布:软件公寓 编辑:程序博客网 时间:2024/05/29 03:18
构造UTF8的std::string
在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格式,如
#include <iostream>
#include <string>
#include <locale>
#include <codecvt>
#include <fstream>
int main(int argc,char *argv[])
{
std::wstring str = L"123,我是谁?我爱钓鱼岛!";
std::wstring_convert<std::codecvt_utf8<wchar_t>> conv;
std::string narrowStr = conv.to_bytes(str);
{
std::ofstream ofs ("c:\\test.txt");
ofs << narrowStr;
}
std::wstring wideStr = conv.from_bytes(narrowStr);
{
std::locale::global(std::locale("Chinese-simplified"));
std::wofstream ofs (L"c:\\testW.txt");
ofs << wideStr;
}
}
有人说,MS引入_UNICODE就是个错误,STL引入wstring也是个错误;而鼓励使用UTF8 string做为程序内部string存储格式。在与GUI交互的时候,转换为wstring(假定GUI使用的是_UNICODE)。这样做至少有一个好处:相对的可以减少程序运行时占用内存的大小。当然现在内存资源也不是个什么大问题,我更关心的是保存/读取XML数据的效率。
VC++默认构造std::string的时候是ANSI格式,如
#include <iostream>
#include <string>
#include <locale>
#include <codecvt>
#include <fstream>
int main(int argc,char *argv[])
{
std::wstring str = L"123,我是谁?我爱钓鱼岛!";
std::wstring_convert<std::codecvt_utf8<wchar_t>> conv;
std::string narrowStr = conv.to_bytes(str);
{
std::ofstream ofs ("c:\\test.txt");
ofs << narrowStr;
}
std::wstring wideStr = conv.from_bytes(narrowStr);
{
std::locale::global(std::locale("Chinese-simplified"));
std::wofstream ofs (L"c:\\testW.txt");
ofs << wideStr;
}
}
- 构造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 的常用使用
- 【time】【gettimeofday】【clock_gettime】【_ftime】
- Linux启动目录解析
- sample tutorial
- POJ 2516 Minimum Cost (最小费用最大流)
- 利用Aapache设置访问目录权限
- 构造UTF8的std::string
- python中os.system()的返回值
- 使用ldap登录服务器
- linux驱动中断处理_tasklet部分
- iPhone像素点和常用控件尺寸
- 监听模式(Listener)在Music中的应用
- poj3173
- 【MySQL 技巧分享】 mysql -e 加 v 简化代码
- Intellij idea工具如何进行项目间的依赖和打.jar包