我正在尝试创建一个程序,使用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;
有没有更简单的方法来实现这一点,而不必重复每一个新行?感谢。
答案 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;
}