gpt4 book ai didi

c - 看来 setlocale() 在链接库中不起作用

转载 作者:行者123 更新时间:2023-11-30 19:49:51 26 4
gpt4 key购买 nike

#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 库,它在 g++ 中通过“-ldoublefann”链接并从文件中读取一些数据,并且在此库中仅适用于“,”。

最佳答案

该问题是由 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>

关于c - 看来 setlocale() 在链接库中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10095047/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com