Подтвердить что ты не робот

Получение имени файла (или пути) из файла fstream

Можно ли получить имя файла или путь от объекта fstream? Я просмотрел методы fstream и не нашел ничего близкого к нему.

4b9b3361

Ответ 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, но также сохраняет его имя файла.