【问题标题】:Does ostringstream inserter use current locale?ostringstream 插入器是否使用当前语言环境?
【发布时间】:2016-04-27 19:31:43
【问题描述】:

不使用科学计数法将double转为字符串,建议的方法是

std::ostringstream strStream;
strStream << std::fixed;
strStream << value;
std::string str = strStream.str();

Prevent scientific notation in ostream when using << with double & How do I convert a double into a string in C++?

我想将 double 转换为不带任何分隔符的字符串,并将点/句号作为小数点,即忽略语言环境。

根据ostringstreamstd::fixedshowpoint的描述,我无法确定

  1. 小数点是否在当前语言环境中?和
  2. str()返回的字符串中是否会存在其他的分隔符(如千位分组)?

如果它按照当前的语言环境,有什么方法可以覆盖 - 它总是点/句号作为小数点并且没有分组?

【问题讨论】:

    标签: c++ string double iostream


    【解决方案1】:

    是的,流的默认语言环境是构建时的当前全局语言环境(请参阅您最喜欢的参考文献中对basic_ios::init 的描述,然后检查流的类型是否不这样做——没有标准类)。

    要更改语言环境,请使用basic_ios::imbue,因此您可能需要添加

    strStream.imbue(std::locale::classic());
    

    strStream的定义之后。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-09
      • 1970-01-01
      • 2017-04-11
      • 1970-01-01
      • 2015-03-07
      • 1970-01-01
      • 1970-01-01
      • 2014-10-25
      相关资源
      最近更新 更多