PDA

View Full Version : [c++] Lettura file


bomber88
23-04-2007, 20:42
Ho il seguente problema... ho un file di testo strutturato nel seguente modo

prova prova1 prova2
prova3 prova4
prova5

e con il seguente codice effettuo la lettura dei dati

#include <iostream>
#include <stdlib.h>
#include <fstream>

using namespace std;

int main()
{
string a;
ifstream lettura("ar.txt");
while (lettura >> a) {
cout<<a<<endl;
}
system("PAUSE");
return 0;
}


il problema è che in output il programma produce questo

prova
prova1
prova2
prova3
prova4
prova5

invece di

prova prova1 prova2
prova3 prova4
prova5

sapete come faccio a risolvere?? so che in qualche modo si deve usare la getline.. infatti per l'inserimento dei dati nn ho problemi... il problema nasce dopo. Grazie in anticipo. Ciau

Dragonx21
23-04-2007, 20:50
ifstream lettura("ar.txt");
while (lettura >> a)

questa istruzione, ogni iterazione, legge fino al primo carattere di "fine stringa" o al primo carattere di "a capo"?

bomber88
23-04-2007, 20:58
essendo una variabile di tipo string che effettua la lettura legge sia a fine stringa ma anche quando incontra lo spazio essendo considerato un carattere di interruzione quindi per ovviare al problema si usa la getline, cmq ho risolto

#include <iostream>
#include <stdlib.h>
#include <fstream>

using namespace std;

int main()
{
string a;
ifstream lettura("ar.txt");
if (lettura.is_open() )
{
while(!lettura.eof() )
{
getline(lettura, a);
cout<<a<<endl;
}
lettura.close();
}
system("PAUSE");
return 0;
}

ciao ggrazie lo stesso

Dragonx21
23-04-2007, 21:05
essendo una variabile di tipo string che effettua la lettura legge sia a fine stringa ma anche quando incontra lo spazio essendo considerato un carattere di interruzione quindi per ovviare al problema si usa la getline, cmq ho risolto

ciao grazie lo stesso

appunto, leggeva il fine stringa, che era prova, poi leggeva prova1 ecc.
te l'ho chiesto proprio perchè a te serviva leggere il fine riga;)