0

私は入門クラスの終わりに近づいていますが、ここで何が起こっているのか理解できません。まず、コード:

#include <iostream>
#include <fstream>

using namespace std;

int main( )
{
    double id = 0.0;
    double rate = 0.0;
    double hours = 0.0;
    double gross = 0.0;

    ifstream wData;
    wData.open("workers.txt", ios::in);

    if (wData.is_open())
    {

    for (int count = 0; count < 8; count = count + 1)
    {

        wData << id << rate << hours;
        gross = rate * hours;
        cout << "Employee ID: " << id << "Gross Pay: " << gross << endl;
     }
     wData.close();
     }
     else
     {
         cout << "The file could not be opened." << endl;
         }


    system("pause"); 
    return 0;
}

次に、エラー:

41 no match for 'operator<<' in 'wData << id'

それはちょっとしたことだろうwData << id << rate << hours;

私はいくつか突っついてきました(私は本当に自分でこれらを解決しようとするのが好きです)が、何が起こっているのかを正確に特定することはできません. 私が頭を悩ませているのは、本当に明白なことかもしれないと思います。

4

10 に答える 10

6

入力ストリームから読み取ら>>ない場合に使用します。<<これらの演算子は、データが移動する方向を指す矢印と考えてください。

于 2013-04-17T15:52:55.127 に答える
3
wData << id << rate << hours;

wDataifstreamオブジェクトです。何かに使用<<wDataています。の定義outputはありません。ファイルから演算子を使用して何かを読み取るために使用されます。したがって、そのエラー メッセージがあります。<<ifstreamifstream>>

于 2013-04-17T15:52:39.810 に答える
2

入力ストリームに出力しようとしています。>>代わりに使用してください。

編集:明らかに、あなたはスペードであなたの答えを得ています:)とにかく、チェックを検討しwData.fail()wData.eof()それぞれ不良データまたは早期のファイルの終わりがあったかどうかを判断する必要があります。また、今後の参考のために、挿入と抽出の両方が可能なストリームがあります (から継承するものはすべてiostream)。

于 2013-04-17T15:52:49.103 に答える
1

wDataでありifstream、出力 (<<) ではなく入力 (>>) を意味します。

http://en.cppreference.com/w/cpp/io/basic_ifstreamを参照してください。

于 2013-04-17T15:52:47.893 に答える
1

方向が間違っている場合は、次のようにします。

 wData >> id >> rate >> hours;

それ以外の:

 wData << id << rate << hours;
于 2013-04-17T15:53:19.287 に答える
0

これは、(ファイルから) プログラムに入力される入力と考える必要があります。そして、出力はファイルに出力されています(プログラムから)。したがって、入力ストリームではなく、出力ストリームを使用する必要があります。

于 2013-04-17T15:56:48.127 に答える
0

ifstreamでは出力できません。読み取りを実行できるようにするために必要なのは、オフストリームです。しかし、あなたはから読んでいるように見えるwDataので、おそらくあなたがする必要があるのは>>、double less than( ) の代わりに double "more than"( )を使用することだけです<<

于 2013-04-17T15:53:16.340 に答える