c++ - 为什么 _tcstod 在解析字符串时使用我的 Windows 区域设置?

标签 c++ windows parsing regional-settings

Windows相关的C++问题!

我正在尝试使用 _tcstod() 解析字符串以获得浮点值。通常,如果我打电话

wchar_t* endPtr;
float result = static_cast<float>(_tcstod( "12.345678", &endPtr));

我得到一个 12.345678 的浮点值,并且 endPtr 的行为符合预期。如果我在 Windows 区域和语言设置中更改我的区域小数分隔符,这实际上是不正常的。具体来说,如果我将小数分隔符从“。”更改为到 ",",突然 _tcstod 只返回一个值 12 而不是整个东西。之后的任何内容。被砍掉了。

有什么方法可以让我在不知道我的区域设置的情况下解析字符串中的浮点值吗?

最佳答案

为什么 _tcstod 在解析字符串时使用我的 Windows 区域设置?

因为它应该是。

有什么方法可以让我在不知道我的区域设置的情况下解析字符串中的浮点值吗?

当然。在 C++ 中,最简单的方法是使用字符串流并为其注入(inject)默认或“C”语言环境。

关于c++ - 为什么 _tcstod 在解析字符串时使用我的 Windows 区域设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33927190/

相关文章:

c++ - 从 clock() 函数获取 EXC_BAD_ACCESS 错误

python - bat 文件在使用 Python 的另一个文件夹中时不运行

c - 在设备固件中支持 WinUSB

c++ - Spirit 在仅出现从 Lexer 获得第一个符号后无法解析

c++ - 对 WSACleanup() 的错误调用杀死了 WSAStartup()

g++ - 是否可以在 g++ 中启用数组边界检查?

c++ - 引用地址

windows - 如何在 Windows 上的 Perl 中获取用户和组信息?

c++ - 如何在 Spirit X3 中正确指定锚定条件?

java - 在 Java 中解析日期的通用方法