d0c1Le.Killah
01-09-2008, 10:48
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:
#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;
}
ma ciò che io voglio è usare un oggetto string, non un vettore di char, e sopratutto la cui dimensione sia proporzionata al numero di caratteri nel file. Se scrivo
while(f1 >> x)
con x di tipo string, ho un errore (non è previsto l'overloading con string credo)
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!!!!!!!!
In pratica ho bisogno di copiare il contenuto di un file su una stringa. Ho provato a usare questo 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;
}
ma ciò che io voglio è usare un oggetto string, non un vettore di char, e sopratutto la cui dimensione sia proporzionata al numero di caratteri nel file. Se scrivo
while(f1 >> x)
con x di tipo string, ho un errore (non è previsto l'overloading con string credo)
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!!!!!!!!