|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Jun 2008
Città: Brindisi
Messaggi: 20
|
[C++]Caricare file di testo su string
Ciao a tutti. Ho un semplice quesito da porre, anche se comunque non ho trovato una soluzione (sebbene stia cercando su google inutilmente da un sacco di tempo).
In pratica ho bisogno di copiare il contenuto di un file su una stringa. Ho provato a usare questo codice: Codice:
#include <string.h> #include <stdlib.h> #include <iostream> #include <fstream> using namespace std; int main(int argc, char **argv) { char a[200]; fstream f1; f1.open("a.txt",ios::in); if(!f1) exit(EXIT_FAILURE); while(f1 >> a) cout << a << endl ; f1.close(); return 0; } Codice:
while(f1 >> x) Quali metodi usare? Devo per forza usare char e poi convertire il risultato finale? non c'è niente di più pratico? E per allocare dinamicamente, devo necessariamente usare un for in cui sfoglio tutto il file e vedo la sua dimensione? Infine ho questo dubbio: finora ho utilizzato stringhe dichiarate staticamente. Essendo molto lunghe (anche molte decine di kb), ho dovuto spezzarle in più linee di codice. Nel momento in cui caricassi tutto il file nella stringa, potrei avere problemi di compilazione o peggio ancora a run-time? Grazie mille per l'aiuto!!!!!!!! |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Se il file non è binario puoi usare la funzione getline di string:
Codice:
while(getline(stream, outputString)) ... |
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: Jun 2008
Città: Brindisi
Messaggi: 20
|
Ciao. Il file non è binario.
Grazie per l'interessamento, ma neanche la soluzione da te data sembra funzionare. Ho degli errori compilando questo codice: Codice:
#include <string.h> #include <stdlib.h> #include <iostream> #include <fstream> using namespace std; int main(int argc, char **argv) { string a; fstream f1; f1.open("a.txt",ios::in); if(!f1) exit(EXIT_FAILURE); while(iostream::getline(f1, a)) cout << endl ; //ad esempio, ma nn va lo stesso f1.close(); return 0; } |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Aug 2008
Messaggi: 51
|
Puoi caricare una riga di un file di testo in una stringa cosi:
Codice:
#include <iostream> #include <fstream> #include <string> int main() { std::string s; std::ifstream myfile ("prova.txt", std::ios_base::in); std::getline (myfile, s); std::cout << s << std::endl; return 0; } Ultima modifica di Noixe : 19-02-2011 alle 07:33. |
![]() |
![]() |
![]() |
#5 |
Junior Member
Iscritto dal: Jun 2008
Città: Brindisi
Messaggi: 20
|
GRAZIE! Sapevo erano 10 linee di codice, ma non le trovavo da nessuna parte
![]() |
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Aug 2008
Messaggi: 51
|
Se ad esempio vuoi leggere riga per riga, puoi fare cosi:
Codice:
do { std::getline (myfile, s, '\n'); // Il terzo paramentro indica fino a quando deve leggere la stringa, in questo caso e' il carattere di ritorno a capo // fai quello che vuoi con il contenuto di s } while (!myfile.eof()); // Finché non raggiunge la fine del file. |
![]() |
![]() |
![]() |
#7 |
Junior Member
Iscritto dal: Jun 2008
Città: Brindisi
Messaggi: 20
|
Si beh certo, ora posso fare i vari giochetti... ovviamente col codice di prima leggevo fino alla fine del testo (EOF); con quest'ultimo invece scelgo il carattere delimitatore.
Ti ringrazio per l'interessamento, ora è tutto chiaro! ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:53.