Cześć, robiłem właśnie zadanie 7. z załącznika i natrafiłem na problem. Mianowicie, po podaniu liczby aut do skatalogowania, program przeskakiwał mi opcje podania maki i przechodził od razu do roku produkcji. Było to spowodowane tym, że znak nowego wiersza zostawał w strumieniu wejściowym. Rozwiązałem ten problem, dodając linie "cin.get()" na początku pętli i teraz moje pytanie: czy można się jakoś obejść bez tego "cin.get()" lub zastąpić funkcję "getline()" inną, aby to sprawnie działało?
Kod programu:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
struct car
{
string brand;
int yop;
};
int main()
{
int n, i;
cout << "how many cars do you want to catalogue? ";
cin >> n;
car *tab = new car[n];
for (i = 0; i < n; i++)
{
cin.get();
cout << endl << "car " << i + 1 << "." << endl;
cout << "car brand: ";
getline(cin, tab[i].brand);
cout << "year of production: ";
cin >> tab[i].yop;
}
for (i = 0; i < n; i++)
{
cout << endl << "car " << i + 1 << "." << endl;
cout << tab[i].brand << endl << tab[i].yop << endl;
}
delete [] tab;
_getch();
return 0;
}