01/02/13 16:28
Majesticeagle
Salve a tutti,
ho realizzato un piccolo programmino in c++ dove salvo in un file dei nomi e poi li stampo (sto ancora imparando come gestire bene i file). Il problema è che vorrei scrivere questi file uno sotto l'altro così che quando vado a stamparli me li stampa uno sotto l'altro. Ho adottato questa soluzione:
void Aggiungi()
{
string nome;
ofstream fout("nomi.dat", ios::app); //Apre il file in scrittura
cout<<"Testo: ";
cin>>nome;
fout<<nome<<endl; //Scrive sul file
fout.close(); //Chiude il file
}
Per stampare ho scritto questa funzione:
void Visualizza()
{
string nome;
ifstream fin("nomi.dat"); //Apre il file in lettura
while(fin>>nome)
{ cout<<nome;
}
fin.close(); //Chiude il file
}
In realtà, quando vado a stampare, mi stampa tutti i nomi uno dietro l'altro! Per esempio: antoniolucadavide
Come posso risolvere?
Grazie!
Ultima modifica effettuata da Majesticeagle 01/02/13 16:29
aaa
01/02/13 17:25
nessuno
Andare a capo?
cout << nome << endl;
Prima della gestione dei file dovresti studiare meglio le basi dell'I/O
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
03/02/13 15:01
Majesticeagle
Il problema del mandare a capo quando stampo l'ho risolto con la soluzione di LittleHacker. Grazie mille!
Un'altra cosa.... Quando vado a far inserire il nome (di tipo stringa) dovrebbe prendermi anche gli spazzi, ma in realtà quando va a scrivere sul file si interrompe al primo spazio e scrive solo la prima parola. Si può risolvere?
aaa
03/02/13 15:13
Saik
Si invece di usare cin << usa cin.getline
aaa
07/02/13 11:19
Majesticeagle
Non me lo fa inserire con cin.getline!!!! Mi stampa "Nome: " e poi dovrei inserire il nome, e invece torna al menù!
aaa