Ho un file di testo denominato num.txt
l'unico contenuto è la riga 123
. Poi ho il seguente:C++ Newbie: passaggio di un flusso a una funzione per leggere i dati
void alt_reader(ifstream &file, char* line){
file.read(line, 3);
cout << "First Time: " << line << endl;
}
int main() {
ifstream inFile;
int num;
inFile.open("num.txt");
alt_reader(inFile, (char*)&num);
cout << "Second Time: " << num << endl;
}
L'output è:
First Time: 123
Second Time: 3355185
Potete aiutarmi a capire come ottenere un fstream che si legge in una funzione ancora assegnare la variabile in main? Lo sto facendo perché lo alt_reader
ha davvero molto di più, ma questa è la parte su cui sono bloccato. Grazie mille per l'aiuto.
UPDATE: Usando i commenti di Bill Oneal, ho scritto
void alt_reader(ifstream &file, stringstream &str, int n){
char buffer[n+1];
file.read(buffer, n);
buffer[n] = 0;
str << buffer;
cout << "First Time: " << buffer << endl; //First Time: 123
}
int main() {
ifstream inFile;
stringstream strm;
int num;
inFile.open("num.txt");
alt_reader(inFile, strm, 3);
cout << "Second Time: " << num << endl; //Second Time: 123
}
Grazie. Qualche critica con quello che c'è adesso?
Grazie. Qualche consiglio su come passare un flusso e ottenere il valore letto dalla funzione (senza una dichiarazione di ritorno?)? – physicsmichael
@ vgm64: sicuro. Vedi modifica. –
@Bill ONeal: ho appena aggiunto un tentativo di espandere il mio codice con la tua tecnica. Funziona. Che ne pensate? – physicsmichael