C++ %f 点而不是逗号
C++ %f dot instead of 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 中进行设置。每个编译器都有自己的默认语言环境设置吗?
您可以添加行
setlocale(LC_ALL, "C");
在调用 fscanf
之前。确保添加
#include <locale.h>
能够调用 setlocale
。
有关 setlocale 的更多信息,请参见 http://en.cppreference.com/w/c/locale/setlocale。
我正在读取 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 中进行设置。每个编译器都有自己的默认语言环境设置吗?
您可以添加行
setlocale(LC_ALL, "C");
在调用 fscanf
之前。确保添加
#include <locale.h>
能够调用 setlocale
。
有关 setlocale 的更多信息,请参见 http://en.cppreference.com/w/c/locale/setlocale。