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; }