用 boost::format 和 boost::lexical_cast 使得数据和字符串的互转方便又安全。
但是最近遇到将整数转换为字符串时,结果总是有逗号作为千分位符。
千分位符实际上是受 locale 控制的,去掉去掉千分位符的方法就是修改
全局的 locale。在网上搜到一篇帖子,解决了我的问题。记之以备忘。
http://blog.csdn.net/koudaidai/article/details/7353772
// 使用当前locale,但numpunct使用缺省的,因此不会在输出数字时加上千位分隔符
std::locale::global(std::locale("").combine<std::numpunct<char> >(std::locale::classic()));
// 另一种方法
查看 lexical_cast 源码,发现还有一种方法
#define BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
// ofstream 中去除千分位符
std::ofstream of("d:\\out.txt");
of.imbue(std::locale(of.getloc(), new std::numpunct<char>()));
// std::cout 中去除千分位符号
std::cout.imbue(std::locale(std::cout.getloc(), new std::numpunct<char>()));