您的位置:首页 > 其它

boost库学习随记五 Boost.Locale 之字符转换 gbk utf8 big5 string wstring等

2014-04-28 18:43 381 查看
Boost.Locale是一个库,它提供高质量的本地化的设施在C + +的方式。它最初是设计的一部分CppCMS - C + +的Web框架的项目,然后促成了提升。

Boost.Locale提供强大的工具,跨平台的本地化软件开发 - 这会谈到用户在其语言的软件。

提供的功能

正确的大小写转换,大小写和规范化。
整理(排序),其中包括4 Unicode排序规则层面的支持。
日期,时间,时区和日历操作,格式化和分析,包括对日历比公历其他透明的支持。
边界分析字,词,句和换行符。
数字格式,拼写和语法分析。
货币格式和解析。
强大的邮件格式(字符串翻译),包括多种格式,使用GNU目录的支持。
字符集转换。
8位字符透明支持集,如拉丁文
支持
的char
wchar_t的

对C + +0 x的实验性支持
char16_t
char32_t
字符串和数据流。

Boost.Locale提高和统一了标准库的API,它变得非常有用和方便开发跨平台的和“跨文化”软件的方式。

相关字符集转换函数功能摘要

std::string boost::locale::conv::between(char const * begin,
char const * end,
std::string const & to_encoding,
std::string const & from_encoding,
method_type how =
default_method
)
Convert a text in range [begin,end) to to_encoding from from_encoding

std::string boost::locale::conv::between(char const * text,
std::string const & to_encoding,
std::string const & from_encoding,
method_type how =
default_method
)
[inline]
Convert a text to to_encoding from from_encoding

std::string boost::locale::conv::between(std::string const & text,
std::string const & to_encoding,
std::string const & from_encoding,
method_type how =
default_method
)
[inline]
Convert a text to to_encoding from from_encoding

template<typename CharType >
std::string boost::locale::conv::from_utf(CharType const * begin,
CharType const * end,
std::string const & charset,
method_type how =
default_method
)
convert UTF text in range [begin,end) to a text encoded with charset according to policy how

template<typename CharType >
std::string boost::locale::conv::from_utf(CharType const * begin,
CharType const * end,
std::locale const & loc,
method_type how =
default_method
)
convert UTF text in range [begin,end) to a text encoded according to locale loc according to policy how

Note:throws std::bad_cast if the loc does not have info facet
installed

template<typename CharType >
std::string boost::locale::conv::from_utf(std::basic_string< CharType > const & text,
std::string const & charset,
method_type how =
default_method
)
Convert a text from charset to UTF string

template<typename CharType >
std::string boost::locale::conv::from_utf(CharType const * text,
std::string const & charset,
method_type how =
default_method
)
Convert a text from UTF to charset

template<typename CharType >
std::string boost::locale::conv::from_utf(std::basic_string< CharType > const & text,
std::locale const & loc,
method_type how =
default_method
)
Convert a text in UTF to locale encoding given by loc

Note:throws std::bad_cast if the loc does not have info facet
installed

template<typename CharType >
std::string boost::locale::conv::from_utf(CharType const * text,
std::locale const & loc,
method_type how =
default_method
)
Convert a text in UTF to locale encoding given by loc

Note:throws std::bad_cast if the loc does not have info facet
installed

template<typename CharType >
std::basic_string<CharType> boost::locale::conv::to_utf(char const * begin,
char const * end,
std::string const & charset,
method_type how =
default_method
)
convert string to UTF string from text in range [begin,end) encoded with charset according to policy how

template<typename CharType >
std::basic_string<CharType> boost::locale::conv::to_utf(char const * begin,
char const * end,
std::locale const & loc,
method_type how =
default_method
)
convert string to UTF string from text in range [begin,end) encoded according to locale loc according to policy how

Note:throws std::bad_cast if the loc does not have info facet
installed

template<typename CharType >
std::basic_string<CharType> boost::locale::conv::to_utf(std::string const & text,
std::string const & charset,
method_type how =
default_method
)
convert a string text encoded with charset to UTF string

template<typename CharType >
std::basic_string<CharType> boost::locale::conv::to_utf(char const * text,
std::string const & charset,
method_type how =
default_method
)
Convert a text from charset to UTF string

template<typename CharType >
std::basic_string<CharType> boost::locale::conv::to_utf(std::string const & text,
std::locale const & loc,
method_type how =
default_method
)
Convert a text in locale encoding given by loc to UTF

Note:throws std::bad_cast if the loc does not have info facet
installed

template<typename CharType >
std::basic_string<CharType> boost::locale::conv::to_utf(char const * text,
std::locale const & loc,
method_type how =
default_method
)
Convert a text in locale encoding given by loc to UTF

Note:throws std::bad_cast if the loc does not have info facet
installed

template<typename CharOut , typename CharIn >
std::basic_string<CharOut> boost::locale::conv::utf_to_utf(CharIn const * begin,
CharIn const * end,
method_type how =
default_method
)
Convert a Unicode text in range [begin,end) to other Unicode encoding

template<typename CharOut , typename CharIn >
std::basic_string<CharOut> boost::locale::conv::utf_to_utf(CharIn const * str,
method_type how =
default_method
)
Convert a Unicode NUL terminated string str other Unicode encoding

template<typename CharOut , typename CharIn >
std::basic_string<CharOut> boost::locale::conv::utf_to_utf(std::basic_string< CharIn > const & str,
method_type how =
default_method
)
Convert a Unicode string str other Unicode encoding

简单示例:

1、between把
source 这个字串从BIG5 转换到 UTF-8:

string source = "BIG5字符串";
string s = boost::locale::conv::between( source, "UTF-8", "BIG5" );
2、to_utf可以输出
string ,也可以输出成
wstring。像下面的例子,就是把
sSource 这个 BIG-5 编码的字串,依序转换成
wstring 和
string 的字串。

string sSource = "BIG-5字符串";
wstring ws = boost::locale::conv::to_utf<wchar_t>( sSource, "BIG5" );
string  ss = boost::locale::conv::to_utf<char>( sSource, "BIG5" );


3、from_utf 是把 UTF 字串(string 或wstring)、转换为特定编码的字串用的,他可以转换string
或wstring 的字串,但是输出一定是string。

下面的例子,就是把
sSource 和
wSource 这两个 UTF 字串,都转换成 BIG-5 的
string 字串。

string  sSource =  "字符串";
wstring wSource = L"...";
string  ss1 = boost::locale::conv::from_utf( wSource, "BIG5" );
string  ss2 = boost::locale::conv::from_utf( sSource, "BIG5" );


4、utf_to_utf的目的,是在 UTF 的
string 字串和
wstring 字串之间做转换,下面的例子,就是把类型是
string 的
sSource 转换成
wstring、并把类型是
wstring 的
wSource 转换成
string

string  sSource =  "...";
wstring wSource = L"...";
wstring wStr = boost::locale::conv::utf_to_utf<wchar_t>( sSource );
string  sStr = boost::locale::conv::utf_to_utf<char>( wSource );
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: