Можно ли получить имя файла или путь от объекта fstream
? Я просмотрел методы fstream
и не нашел ничего близкого к нему.
Получение имени файла (или пути) из файла fstream
Ответ 1
Нет, это невозможно, по крайней мере, в стандартной реализации библиотеки.
Класс fstream не сохраняет имя файла и не предоставляет никакой функции для его извлечения.
Таким образом, один из способов отслеживания этой информации - использовать std::map
как:
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
//...
}
Или просто пропустите имя файла.
Ответ 2
вы также можете создать небольшой класс, который наследует от fstream
и ведет себя как fstream
, но также сохраняет его имя файла.