Salve a tutti ragazzi.
Sto scrivendo un programma in C++ e da un po' di ore sto impazzendo con questa cosa:
ho creato una classe che dovrebbe contenere parecchi oggetti, inizialmente li avevo inseriti in un array inizializzandoli uno per uno con i rispettivi dati, ma poi ho pensato di mettere i dati su un file txt, leggerli e assegnarli alle varie istanze.
Bene, finchè si è trattato di leggere dal file valori numerici è andato tutto liscio (ho usato >>), ma quando si è trattato di leggere stringhe con spazi sono iniziati i problemi, ovviamente, dato che l'operatore >> si ferma quando incontra lo spazio.
Qui sotto posto una versione semplificata del mio codice, giusto per farvi capire la situazione. Ho fatto un array di 3 oggetti ma normalmente volevo metterne di più.
Come posso ovviare al problema e riuscire a leggere da file tutta la stringa compresi gli spazi?
Esiste un modo? O devo rinunciare e tornare a inizializzare gli oggetti con un costruttore?
Cosa mi consigliate di fare? Considerate che sono alle prime armi...Grazie in anticipo![]()
codice:#include <iostream> #include <fstream> using namespace std; ifstream file; class Prova{ int a,b; public: char nome[20]; void mostra() { cout << a << b <<nome;} void set() { file>>a>>b>>nome; } }; int main() { file.open("prova.txt", ios::in); Prova oggetto[3]; for(int i=0;i<3;i++) oggetto[i].set(); for(int j=0;j<3;j++) oggetto[j].mostra(); file.close(); cout<<"Fine"; return 0; }

Rispondi quotando