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对象,您正在使用与<<某物。没有为. 用于从文件中读取带有操作符的内容。因此,您会收到该错误消息。wDataoutput<<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

ifstream 只>>定义了运算符。
>>用于输入。
您需要该ofstream对象才能输出某些内容。

于 2013-04-17T15:54:19.960 回答
0

这不应该:

wData << id << rate << hours;

 wData >> id >> rate >> hours;

??

于 2013-04-17T15:54:30.600 回答
0
ifstream wData; 

这是一个input文件流。你不能<<在上面使用运算符。就像你做不到一样cin<<

于 2013-04-17T15:54:36.290 回答
0

您需要将其视为输入到程序中的输入(来自文件)。并且输出被输出到文件(来自程序)。所以你想使用输出流,而不是输入流。

于 2013-04-17T15:56:48.127 回答
0

您不能在 ifstream 中输出。您需要能够执行读取的是 ofstream。但似乎您的意思是阅读,wData所以您可能需要做的就是使用双“大于”(>>)而不是双小于(<<)。

于 2013-04-17T15:53:16.340 回答