0

我在这段代码中有错误:在“in>>point”中的“>>”的while循环中

void FileRead(const int cap,const string point,int counter)
{

    ifstream in;
    in.open("sample_strings.txt"); //ifstream in;  in.open("sample_data.txt");

    if (in.fail())
        cout<<"sample_data not opened correctly"<<endl;

    while(!in.eof() && counter<cap)
    {
        in>>point[counter];
        counter++;
    }

    in.close();
}

我尝试实现运算符>>我需要,但我仍然得到错误。

ifstream & operator>>(ifstream & in, ARRAY & Original)
{
    cout<<"operator>> has been called\n";

    Original.counter = 0;

    while(!in.eof() && Original.count<Original.cap)
    {
        in>>Original. point[Original.counter];
        (Original.counter)++;
    }

    return in;
}

我正在实现读取文件函数以在我传递它时读入构造函数的数组

我拥有的私人功能是这些

private:

string *point;

int counter;

int cap;

我还是 C++ 的新手,所以任何有助于理解这一点的小帮助都会有所帮助。

4

1 回答 1

0

您正在尝试读入const string. 而不是传递const string point,传递string& point传递作为对字符串的可修改引用。

线路in>>point[counter]正在呼叫operator[]point然后呼叫operator>>。但是因为pointis a const string,所以operator[]返回 a const char&,它不应该被读入。您希望它返回char&,因此point必须是非常量。

于 2013-09-15T22:20:00.957 回答