ostringstream 插入器是否使用当前语言环境?
Does ostringstream inserter use current locale?
不使用科学计数法将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 转换为不带任何分隔符且 Dot/Full-stop 作为小数点的字符串,即忽略语言环境。
根据ostringstream, std::fixed and showpoint的描述,我无法确定
- 小数点是否在当前语言环境中?和
- str()返回的字符串中是否会根据语言环境有其他分隔符(如千位分组)?
如果根据当前区域设置,覆盖的方式是什么 - 它总是 Dot/Full-stop 作为小数点并且没有分组?
是的,流的默认语言环境是构建时的当前全局语言环境(请参阅您最喜欢的参考资料中对 basic_ios::init
的描述,然后检查流的种类是否不这样做——标准 类 的 none 可以)。
要更改语言环境,请使用 basic_ios::imbue
,因此您可能需要添加
strStream.imbue(std::locale::classic());
定义strStream
后.
不使用科学计数法将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 转换为不带任何分隔符且 Dot/Full-stop 作为小数点的字符串,即忽略语言环境。
根据ostringstream, std::fixed and showpoint的描述,我无法确定
- 小数点是否在当前语言环境中?和
- str()返回的字符串中是否会根据语言环境有其他分隔符(如千位分组)?
如果根据当前区域设置,覆盖的方式是什么 - 它总是 Dot/Full-stop 作为小数点并且没有分组?
是的,流的默认语言环境是构建时的当前全局语言环境(请参阅您最喜欢的参考资料中对 basic_ios::init
的描述,然后检查流的种类是否不这样做——标准 类 的 none 可以)。
要更改语言环境,请使用 basic_ios::imbue
,因此您可能需要添加
strStream.imbue(std::locale::classic());
定义strStream
后.