txt programacion por manejo linea libreria leer ficheros crear como buscar binarios ats archivos archivo c++ file-io fstream

c++ - programacion - Obtener nombre de archivo(o ruta) de fstream



manejo de archivos en c++ fstream (2)

¿Puedo obtener un nombre de archivo o su ruta desde un objeto fstream ? Miré a través de los métodos de fstream y no encontré nada cerca de eso.


No, eso no es posible, al menos en la implementación estándar de la biblioteca.

La clase fstream no almacena el nombre de archivo y no proporciona ninguna función para recuperarlo.

Entonces, una forma de hacer un seguimiento de esta información es usar std::map como:

std::map<std::fstream*, std::string> stream_file_table; void f() { //when you open a file, do this: std::fstream file("somefile.txt"); stream_file_table[&file] = "somefile.txt"; //store the filename //.. g(file); } void g(std::fstream & file) { std::string filename = stream_file_table[&file]; //get the filename //... }

O simplemente pase el nombre del archivo también.


también puede diseñar una pequeña clase que hereda de fstream y se comporta como un fstream pero también almacena su nombre de archivo.