Puis-je obtenir un nom de fichier ou son chemin à partir d'un objet fstream
? J'ai regardé les méthodes de fstream
et je n'ai rien trouvé de proche.
Non, ce n'est pas possible, du moins dans l'implémentation conforme Standard de la bibliothèque.
La classe fstream ne stocke pas le nom de fichier et ne fournit aucune fonction pour le récupérer.
Donc, une façon de garder une trace de ces informations est d'utiliser std::map
comme:
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
//...
}
Ou, passez simplement le nom du fichier également.
vous pouvez également concevoir une petite classe qui hérite de fstream
et se comporte comme un fstream
mais stocke également son nom de fichier.