Salve a tutti, è da poco che programmo in c++ e sto riscontrando questo problema:
Ho scritto un codice con una struttura per rappresentare una libreria, quando chiedo all'utente di inserire i libri contenenti all'interno della libreria, il programma salta come se legge due input insieme su una riga.
sicuramente il fatto dipende dal fatto che la stringa è abbastanza lunga, riscontravo lo stesso problema in java risolto con una funzione per leggere una riga intera. ce un modo per ovviare al problema anche sul c? o la mia intuizione è sbagliata e il problema è tutt'altro? vi allego il codice
codice:
#include <iostream>
#include <string>
#include <cstdlib>
#include <istream>
#include <fstream>
using namespace std;
int main(int argc, char** argv) {
struct libro {
string autore;
string titolo;
int data_pubblicazione;
float prezzo;
};
struct libro libreria[3];
cout << "Prototipo Uso delle Strutture";
cout << endl;
for(int i = 0; i < 3; i++)
{
cout << "Inserire l'autore' del libro " << i ;
cin >> libreria[i].autore;
cout << "Inserire il titolo del libro " << i ;
cin >> libreria[i].titolo;
cout << "Inserire l'anno di pubblicazione del libro " << i ;
cin >> libreria[i].data_pubblicazione;
cout << "Inserire il costo del libro " << i;
cin >> libreria[i].prezzo;
cout << endl;
cout << "Id " << i << " aggiunto con successo!";
}
cout << endl;
cout << "Resoconto Libri inseriti";
for(int i = 0; i < 3; i++)
{
cout << "ID libro: " << i ;
cout << endl;
cout << "Autore: " << libreria[i].autore;
cout << "Titolo: " << libreria[i].titolo;
cout << "Data Pubblicazione " << libreria[i].data_pubblicazione;
cout << "Prezzo: " << libreria[i].prezzo;
cout << endl;
}
system("pause");
return 0;
}