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.