#include <qapplication.h>
#include <qmainwindow.h>
#include "mainwindow.hpp"
#include "../RegisterOfErrors.hpp"
#include <clocale>
extern std::string* Error::DescriptionOfErrors;
int main (int argc, char *argv[])
{
std::locale::global(std::locale("en_US"));
setlocale(LC_ALL, "en_US");
FILE *conf = fopen("dupa.txt", "r");
float dupa;
fscanf(conf, "%f", &dupa);
printf("%f\n", dupa);
Error::setDescriptionOfErrors();
QApplication app(argc, argv);
MainWindow window;
window.show();
return app.exec();
}
我的默认语言环境是“es_ES”,所以“,”是小数点。 这是我的代码。在文件“dupa.txt”中是一个数字“1.0344”,它可以正常工作。但是,在代码中我更深入地使用了fann库,它通过“-ldoublefann”以g ++链接并从文件中读取一些数据,并且在这个库中只能工作“,”。
答案 0 :(得分:0)
问题是由Qt。
引起的有一些代码
#include "doublefann.h"
#include "fann_cpp.h"
#include <clocale>
int main() {
setlocale(LC_ALL, "en_US");
const int max_neurons = 20;
const int neurons_between_reports = 1;
const double desired_error = 0.0001;
FANN::neural_net* repetition_ann;
repetition_ann = new FANN::neural_net();
repetition_ann->create_shortcut(2, 2, 1);
repetition_ann->cascadetrain_on_file("train.dat", max_neurons, neurons_between_reports, desired_error);
}
这段代码按照我的预期工作 - 它从文件“train.dat”中读取带有“。”的数字,广告用“。”打印数字。
这些情况之间的区别:在第一种情况下,类似的代码在qtapplication中的某处,这段代码是独立的。
Qt设置了自己的区域设置,因此解决方案是添加一行:std::locale::global(std::locale("en_US"));
和#include <QtCore>