使用ofstream使文本输出动态化

时间:2014-03-02 20:46:23

标签: ofstream

我正在尝试创建一个程序,使用ofstream将汽车的vin,加仑,英里和英里/加仑输出到文本文件中。

outfile << setw(8) << "VIN" << setw(19) << "Miles" << setw(10) << "Gallons" << setw(6) << "MPG"      << "\n" << "---------------------------------------------\n" << vin(0) << setw(10) << miles(0) << setw(6) << gallons(0) << setw(11) << fixed << showpoint << setprecision(1) << static_cast<double>(miles(0))/gallons(0)<< "\n" << vin(1) << setw(10) << miles(1) << setw(6) << gallons(1) << setw(11) << static_cast<double>(miles(1))/gallons(1) << "\n" << vin(2) << setw(10) << miles(2) << setw(6) << gallons(2) << setw(11) << static_cast<double>(miles(2))/gallons(2) << "\n" << vin(3) << setw(10) << miles(3) << setw(6) << gallons(3) << setw(11) << static_cast<double>(miles(3))/gallons(3) << "\n" << vin(4) << setw(10) << miles(4) << setw(6) << gallons(4) << setw(11) << static_cast<double>(miles(4))/gallons(4) << endl;

有没有更简单的方法来实现这一点,而不必重复每一个新行?感谢。

1 个答案:

答案 0 :(得分:0)

首先,你应该以对象为导向来保持简洁。这意味着优先保留vin,加仑,英里和mpg作为类的数据成员。

struct Car
{
    // ...
    int vin, gallons, miles, mpg;
};

然后,您可以为输入和输出实现流插入器/提取器。创建Car元素并将其放在std::vector<Car>中并迭代它们以读取或写入标准输入/输出。

最终,上面的行应转换为:

for (const auto& c : cars)
{
    std::cout << c << std::endl;
}