Вопрос по file-io, c++ – Получение имени файла (или пути) из fstream

43

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

Я не думаю, что это возможно. Базовый файл может иметь несколько имен (если он имеет несколько жестких ссылок) или вообще не иметь имени (например, если он представляет собой анонимный канал). Frédéric Hamidi

Ваш Ответ

2   ответа
22

fstream и ведет себя какfstream но также хранит свое имя файла.

Error: User Rate Limit Exceededstd::stringError: User Rate Limit Exceeded
40

это невозможно, по крайней мере, в стандартной реализации библиотеки.

Класс 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
    //...
}

Или просто передайте имя файла.

Error: User Rate Limit Exceeded

Похожие вопросы