2017-01-24 5 views
0

C++ Qtを使用して.csvファイルを読み取る際に問題があります。CSVからdouble値を抽出すると予期しない結果が発生するC++

0.2345;0.567;1.2456;... 

そして、これは、CSVファイルを読み込むためのコードである:ここではCSV形式です

void CSV::readCSV(std::istream &input, std::vector<double> &output) { 
    std::string csvElement; 
    while (std::getline(input, csvElement, ';')) { 
    output.push_back(stod(csvElement)); 
    } 
} 

そして出力:

0.0000 0.0000 1.0000 

出力が間違っています。あなたはこの問題について私を助けてくれますか?

+1

コードをデバッグしようとしましたか? stod()が返す実際の値は何ですか? readCSV()に渡されるとベクトルは空ですか?あなたのロケールは '。'を使用しますか?小数点記号として? – roalz

+0

@roalz氏によれば、デバッガは何を言っていますか?何を試しましたか? –

+0

[最小限の、完全で検証可能な例](http://stackoverflow.com/help/mcve)を作成してください。表示する関数の使い方や、出力の印刷方法を含む。 –

答えて

1

あなたのコードのどこかに値をある整数型に変換してから、それらを出力するか、または2倍に変換していると思われます。次のようなもの:

std::cout << std::fixed << std::setprecision(4); 
for (auto el : vec){ 
    int i = el; 
    double d = i; 
    std::cout << "Double: " << el << " Integer: " << i << " Double again: " << d << std::endl; 
} 
+0

これは決して整数に変換されません これはメソッド 'std :: fstream fileBiasOutput( "/ home/fatchur/Qt5.7.0/Projects/genderRecognition/biasOutput.csv"、ios :: in)を呼び出すコードです。 if(!fileBiasOutput.is_open()) { std :: cout << "ファイル5が見つかりません!\ n"; システム( "PAUSE"); リターン1; } myCSV.readCSV(fileBiasOutput、myNet.biasOutput); cout << "6 ok"; –

+0

私はVisual Studioのウィンドウでそれを実行すると、結果は正しいですが、私がubuntuに移動すると、問題が表示されます。 –

+0

'ベクター bobotOutput;' このMYNETクラス –

関連する問題