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