c++ - ostringstream 插入器是否使用当前语言环境?

标签 c++ string double iostream

不使用科学计数法将double转换为string,建议的方法是

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 转换为不带任何分隔符和点/句号作为小数点的字符串,即忽略语言环境。

来自 ostringstream 的描述, std::fixedshowpoint , 我无法确定

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

如果根据当前语言环境,覆盖的方式是什么 - 它始终以点/句号作为小数点并且没有分组?

最佳答案

是的,流的默认语言环境是构造时的当前全局语言环境(请参阅您最喜欢的引用资料中的 basic_ios::init 的描述,然后检查流的类型是否不否则做——标准类都不做)。

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

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

strStream 的定义之后。

关于c++ - ostringstream 插入器是否使用当前语言环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34925705/

相关文章:

c++ - 在 C++ 中自动引用 vector

c++ - 没有正确使用运算符 '?'?

c++ - new[] 在填充之前不会减少可用内存

Java - 如何使非字符串对象的 JComboBox 显示字符串名称?

c++ - 如何快速评估零集?

java - string.intern 没有使用更少的内存

actionscript-3 - 使用多个字符分割字符串

c++ - 为什么我的数字在我的猜数字游戏中计算不正确?

java - double 四舍五入到小数点后两位

从 Visual Basic 6 调用 C DLL : Double data type not working