2012-04-10 5 views
0
#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ライブラリを使用しています.fannライブラリはg ++で "-ldoublefann"でリンクされ、ファイルからデータを読み込みます。このライブラリは "、"のみで動作します。setlocale()がリンクライブラリで動作しないようです

+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>

関連する問題