C ++%f点而不是逗号

时间:2015-10-24 22:09:39

标签: c++ locale comma

我正在读取 c ++ 中的文件,其中浮点数(%f)有一个点而不是逗号。

文件中的每一行都有3个这样的数字

1.000 -1.000 0.000

例如。

我的应用程序不想读取点后的数字,所以如果我这样做

fscanf(file, "%f %f %f\n", &x, &y, &z );

例如x设置为1,其他所有内容都保留为0,因为它只读取第一个点。

我已经在某个地方读过我应该使用 setlocale 或类似的东西更改语言环境,但它没有用完。

有人可以解释一下如何正确地做或者有其他办法吗?

修改 我从标题中删除了“QT”。首先它是在那里,因为我认为可能QT有一些特殊的设置或东西的区域设置。奇怪的是,我的 ST3 默认C++ Single File构建系统已将区域设置设置为使用点而不是逗号,但我必须在QT中设置它。每个编译器都有自己的默认语言环境设置吗?

1 个答案:

答案 0 :(得分:2)

您可以添加

setlocale(LC_ALL, "C"); 
在致电fscanf之前

。确保添加

#include <locale.h>

可以致电setlocale

有关setlocale的更多信息,请参见http://en.cppreference.com/w/c/locale/setlocale