2014-03-02 4 views
1

Я пытаюсь создать программу, которая выводит 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

Первое, что вы должны объективно ориентировать свой код, чтобы он был кратким. Это означает, что вы предпочитаете хранить vin, gallons, miles и mpg в качестве членов данных класса.

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

Затем вы можете реализовать вставки и выходы потока для ввода и вывода. Создайте и поместите свои Car элементы в std::vector<Car> и проведите через них, чтобы читать или записывать их на стандартный ввод/вывод.

В конечном счете, линия выше, должны быть преобразованы в:

for (const auto& c : cars) 
{ 
    std::cout << c << std::endl; 
} 
Смежные вопросы