Tengo un archivo de texto llamado num.txt
cuyo único contenido es la línea 123
. Entonces tengo el siguiente:C++ Novato: Pasar un fstream a una función para leer datos
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;
}
La salida es:
First Time: 123
Second Time: 3355185
¿Puede ayudarme a averiguar cómo obtener una fstream que se lee en una función aún asignar la variable principal? Estoy haciendo esto porque alt_reader
realmente tiene mucho más que eso, pero esta es la parte en la que estoy estancado. Muchas gracias por la ayuda.
ACTUALIZACIÓN: uso de comentarios de Bill Oneal, he escrito
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
}
Gracias. ¿Alguna crítica con lo que hay ahora?
Gracias. ¿Algún consejo sobre pasar un flujo de datos y obtener el valor de lectura de la función (sin una declaración de devolución?)? – physicsmichael
@ vgm64: Claro. Ver editar. –
@Bill ONeal: Acabo de agregar un intento de ampliar mi código con su técnica. Funciona. ¿Que piensas de eso? – physicsmichael