1

まだ C++ の初心者なので、使い方がわかりませんfstreamdoubleプログラム内の一連の変数に、.txtまたは.csvファイルから値を代入したい(.csv実際的な理由からは、この方がよい場合があります)。

input_file.csv私がそのように見えるとしましょう:

10
0
20
0.4
0.1333382222
0
0.5
10
20
0.76
0.3
0.1
0.2

0これらの値は、コード内の次の変数 (最初に equal to として宣言) に割り当てる必要があります。

/// geometry
double Dist=0; ///Distance between the 2

double PosAi = 0;
double PosAo = 0;
double PosBi = 0;
double PosBo = 0; ///positions i/o

/// densities

double iDA=0;
double oDA=0;
double iDAtop=0;
double oDAtop=0; /// Left

double iDB=0;
double oDB=0;
double iDBtop=0;
double oDBtop=0; /// Right

の値を読み取っinput_file.csvて変数に割り当てたいので、次のように入力します。

cout<<Dist<<" "<<PosAi<<" "<<PosAo<<" "<<

...........等。;

コンソールに次のリストが表示されます。

10 0 20 0.4 0.1333382222 0 0.5 10 20 0.76 0.3 0.1 0.2

しかし、そのために fsteam を使用する方法がわかりません。少し助けていただけますか? ありがとう!


私のような初心者が同じ問題に遭遇した場合の答えは次のとおりです。

#include <iostream>
#include <fstream>
using namespace std;

/// geometry

double Dist=0; ///Distance between the 2
double PosAi = 0;
double PosAo = 0;
double PosBi = 0;
double PosBo = 0; ///positions i/o

/// densities

double iDA=0;
double oDA=0;
double iDAtop=0;
double oDAtop=0; /// Left
double iDB=0;
double oDB=0;
double iDBtop=0;
double oDBtop=0; /// Right

int main()
{
ifstream ifs ("input.csv");
if (!ifs)
    // process error
ifs >> Dist;
ifs >> PosAi;
ifs >> PosAo;
ifs >> PosBi;
ifs >> PosBo;
ifs >> iDA;
ifs >> oDA;
ifs >> iDAtop;
ifs >> oDAtop;
ifs >> iDB;
ifs >> oDB;
ifs >> iDBtop;
ifs >> oDBtop;

    // print variables

    cout << Dist << " " << PosAi << " " << PosAo << " " << PosBi << " " << PosBo << " " << iDA << " " << oDA << " " << iDAtop << " " << oDAtop << " " << iDB << " " << oDB << " " << iDBtop << " " << oDBtop << endl;
}

ありがとう

4

3 に答える 3

1

まず、これには (通常) を使用せずfstream、 を使用しifstreamます。また、通常は直接アクセスするのではなく、istream&;を介してアクセスします。ストリームのタイプに関係なく、 ifstream istream istream&`ofstreamから派生したものと 同じです。ostream,derives from, so that you can use

最後に、 の各<<演算子について、ostreamに対応する>>演算子があるistreamため、 を実行できる場合は std::cout << x実行できますinput >> x(ただし、通常は を実行しませんstd::cout << x。 を実行しますoutput << x。ここ outputで、 はostream&関数に渡されます std::cout。 、std::ofstreamまたはその他の ostream)。もちろん、違いはあります。ソース (変数) を制御するため、出力は一般に入力よりも簡単です。文字通り何でも受け取ることができるため、入力には多くのエラーチェックが必要です。特に、入力が成功したことを確認するまで、入力値を使用することはできません。出力の場合、通常、これは出力の最後に一度だけ行います (最後のフラッシュの後) std::cout、または を閉じた後std::ofstream)。

于 2013-07-15T14:37:03.880 に答える