去除 boost::format lexical_cast 输出的整数中的千分位符

用 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>()));
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值