Вопрос по file-io, c++ – Получение имени файла (или пути) из fstream
Могу ли я получить имя файла или его путь изfstream
объект? Я просмотрел методыfstream
и не нашел ничего похожего на это.
Я не думаю, что это возможно. Базовый файл может иметь несколько имен (если он имеет несколько жестких ссылок) или вообще не иметь имени (например, если он представляет собой анонимный канал).
Frédéric Hamidi
2
ответа
это невозможно, по крайней мере, в стандартной реализации библиотеки.
Класс 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
//...
}
Или просто передайте имя файла.
Похожие вопросы
Я не думаю, что это возможно. Базовый файл может иметь несколько имен (если он имеет несколько жестких ссылок) или вообще не иметь имени (например, если он представляет собой анонимный канал).