为什么在解析字符串时使用我的windows区域设置(_tcstod)

Why is _tcstod using my windows region settings when parsing a string?

本文关键字:设置 区域 windows tcstod 我的 字符串 为什么      更新时间:2023-10-16

Windows相关C++问题!

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

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

我得到的浮点值为12.345678,endPtr的行为与预期一致。如果我在Windows区域和语言设置中更改区域十进制分隔符,这实际上是错误的。具体来说,如果我将十进制分隔符从"."更改为",",那么_tcstod突然只返回值12,而不是整个值。之后的任何事情。

在对Region设置不可知的情况下,是否有某种方法可以解析字符串中的浮点值?

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

因为它应该。

在对Region设置不可知的情况下,是否有某种方法可以解析字符串中的浮点值

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