从流中获取文件名(或路径)

Getting filename (or path) from fstream

本文关键字:路径 文件名 获取      更新时间:2023-10-16

我可以从fstream对象获取文件名或其路径吗?我查看了fstream的方法,没有找到任何接近它的东西。

不,这是不可能的,至少在库的标准一致性实现中是不可能的。

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
    //...
}

或者,也只是传递文件名。

你也可以设计一个小类,它继承自fstream,行为类似于fstream,但也存储其文件名。