C++ 奇怪的std::带有gcc 7.4.0的atof bug

C++ 奇怪的std::带有gcc 7.4.0的atof bug,c++,atof,gcc7,C++,Atof,Gcc7,我在Ubuntu18.0.4中的std::atof中有一个奇怪的行为,QtCreator(4.10)作为IDE/GCC7.4.0: 当我在QtCreator的调试模式下运行时,它会像平常一样解析字符串。但当我正常跑步时,它会落地 具有此行为的示例代码: std::string exampleStr = "3.0303"; std::cout << "string value: " << exampleStr << std

我在Ubuntu18.0.4中的std::atof中有一个奇怪的行为,QtCreator(4.10)作为IDE/GCC7.4.0:

当我在QtCreator的调试模式下运行时,它会像平常一样解析字符串。但当我正常跑步时,它会落地

具有此行为的示例代码:

std::string exampleStr = "3.0303";
std::cout << "string value: " << exampleStr << std::endl;
std::cout << "double value - c_str(): " << std::atof(exampleStr.c_str()) << std::endl;
std::string exampleStr=“3.0303”;

std::cout我用以下内容更改了区域设置:

std::setlocale(LC_ALL, "en_US.UTF-8");
它适用于调试和运行模式。在调试模式下运行仍然很有趣,与正常运行的语言环境不同。
所有响应的Thx。

这可能发生,例如,当区域设置(由
atof()
考虑)不是英语或C,而是德语时。在德语区域设置中,可以使用逗号(
)代替小数点,用浮点分隔字符串的整数部分和小数部分。(我曾经为这一点挣扎过,觉得值得一提。)仅供参考:请展示一个完整的,可以复制粘贴、编译和运行以重现问题的文件。另外,请添加您是否(可能)使用小数点字符不是
的区域设置,如上文所述的德语。Qt creator可能正在设置不同的环境变量,从而更改默认区域设置
std::setlocale(LC_ALL, "en_US.UTF-8");