0

私は C++ のクラス割り当てに取り組んでおり、テキスト ファイルから入力を取得し、それらの値を配列に割り当てる必要があります.1 つは文字列、2 番目は int、3 番目は double です。

私たちは配列を紹介しただけで、ポインターやリンクされたリスト、またはより高度なものについてはまだ何も知らないので、オプションが多少制限されているように感じます. 私は一日中、テキスト ファイルから入力を取得して適切な配列に割り当てる方法を見つけようとしました。getline を使用して入力ファイルを読み取り、各データを区切る区切り文字を設定しようとしましたが、複数回使用しようとするとエラーが発生します。私が読んだことから、これは関数をオーバーロードする方法に関係していますが、解決するのに途方に暮れています。それについて私が読んだすべての説明は、私の現在の親しみのレベルを超えています. 現在、私は次のコードの断片に注目しています。

for (int i = 0; i < EMP_NUM; i++) // Get input from text file for names.
    getline(inFile, nameAr[i], '*');

for (int i = 0; i < EMP_NUM; i++) // Input for hours.
    getline(inFile, hoursAr[i], '*');

for (int i=0; i < EMP_NUM; i++) // Input for hourly rate.
    getline(inFile, hrateAr[i], '*');

getline を 3 回使用して、データを 3 つの個別の配列に書き込み、後でそれらを使用して一連の計算を行い、それらを別のテキスト ファイルに出力しようとしています。getline の最初のインスタンスはコンパイラ エラーを生成しませんが、後の 2 つのインスタンスは生成します。データを配列に入れるための別の解決策がよくわからないので、途方に暮れています。どんな助けでも素晴らしいでしょう!

4

3 に答える 3

1

私の理解が正しければ、ファイルには文字列、int、および double の 3 つの値しかありません。空白で区切られていると思います。

その場合は必要ありませんstd::getline()。代わりに、抽出演算子を使用します。

std::ifstream file("input.txt");
std::string s;
if( ! (file >> s) ) {  // a single word extracted from the file
    // failure
}
int n;
// ...
于 2010-11-06T07:46:39.337 に答える
0

コンパイラエラーは何と言っていますか?エラーの原因は確かgetlineですか?多分それはgetline呼び出しのためではなく、の複数の宣言のためですi

于 2010-11-06T08:01:35.773 に答える
0

1)3つの異なる反復の代わりに、1つだけを使用します

2)ポインタの代わりに文字列オブジェクトをgetlineに渡します

string buf;
for (int i = 0; i < EMP_NUM; i++) // Get input from text file for names.
{
    getline(inFile, buf, '*');
    nameAr[i] = buf;
    getline(inFile, buf, '*');  //assuming delimiter is again *
    hoursAr[i] = atoi(buf.c_str() );  //C way to doing it...however in c++ u have to use stringstreams....
    getline(inFile, buf);
    hrateAr[i] = atof(buf.c_str() );;
}
于 2010-11-06T08:24:08.140 に答える