【问题标题】:How to make a function output into a text file with File I/O如何使用 File I/O 将函数输出到文本文件中
【发布时间】:2014-09-07 06:48:40
【问题描述】:

现在我有一个名为displayAllCars(Cars)void 函数。我想将此函数中的所有内容显示到文本文件中。以下是我的代码,但它不起作用。

void displayAllCars(vector<Vehicle*>& cars)
{
    for(int i = 0; i < cars.size(); i++)
    {
        cout << i+1 <<". ";
        cars[i]->display();
        cout << endl;
    }
}



        ofstream salesAnalysis;
        salesAnalysis.open ("salesAnalysis.txt");
        salesAnalysis << displayAllCars(cars) << endl;
        salesAnalysis << "Total Sales for the Company(RM): " << totalSales << endl;

错误是“与操作员

【问题讨论】:

  • displayAllVehiclesdisplayAllCars ?请注意,两者都返回void,因此不能与&lt;&lt;混合使用
  • 抱歉,我做了更改。它是 displayAllCars。我可以知道如何解决这个问题,以便我可以将函数显示到文本文件中吗?

标签: c++ file io


【解决方案1】:
ostream & displayAllCars(ostream & ostr, vector<Vehicle*>& cars)
{
    for(int i = 0; i < cars.size(); i++)
    {
        ostr << i+1 <<". ";
        cars[i]->display(ostr);
        ostr << endl;
    }
}

ofstream salesAnalysis("salesAnalysis.txt");
displayAllCars(salesAnalysis, cars);
salesAnalysis << "Total Sales for the Company(RM): " << totalSales << endl

【讨论】:

  • 当我尝试这个“没有匹配函数调用'Vehicle::display(std::ostream&)”时出现错误如果是汽车[i]->display();它可以工作,但它只显示索引“i”。
  • 您必须调整 vehicle::display() 方法以接受 ostream 参数。另一种选择是删除 display() 方法并将其替换为
【解决方案2】:

你需要重载一个操作符

ostream& operator << (ostream &os, const vehicle &vc) {
    vc.display(os);
    return os;
}

ostream& operator << (ostream &os, const vector<vehicle*> &vc) {
    for(int i = 0; i < vc.size; ++i) {
        os << *vc[i] << " "; // after *vc[i] some separator or std::endl
    }
    return os;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多