c++ - 在运行时检查操作系统正在运行哪种语言

标签 c++ floating-point operating-system

我写了一个 C++ 函数调用的配置文件。 由于某些操作系统或操作系统中设置的语言以不同方式读取 float ,例如 (4.5 & 4,5)

我如何在运行时检查正在运行的操作系统,以便我知道我是否应该读取带逗号或小数点的 float 。

有什么想法吗?

(我的代码在 windows 和 linux(跨平台)上都相同,但是当我在 linux 上读取包含 float 的配置文件时,它没有正确读取小数点?)

前进的方向是什么?

最佳答案

您要查找的术语是 localeiostream 成员函数 imbue() . imbue 页面上的示例代码几乎提供了您想要的确切功能。

double d;
std::locale mylocale("");
std::cin.imbue(mylocale);
std::cin << d;

最终应该以正确的形式读取变量。您可能需要从环境变量或类似变量中获取语言环境名称,具体取决于平台。在 Linux 上,它来自环境变量 LANG。我不确定 Windows。

关于c++ - 在运行时检查操作系统正在运行哪种语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19805993/

相关文章:

c++ - 如果无效,如何重复用户输入的电子邮件

multithreading - 多线程实际上在单处理器环境中工作吗

c - 使用 float 和 double 时,c 中的 -0.0000 是什么?

erlang - Erlang 中的精度

ruby - r 的最大倍数不大于 x

c - 线程的缓存在退出时是否刷新到主内存?

c - 了解低级文件例程

c++ - 为什么bool和int8_t的普通类型在C++中是int32_t?

C++17 支持 Eclipse Neon

c++ - 加速矩阵乘法