从fstream获取文件名(或路径)

时间:2012-05-27 10:53:56

标签: c++ file-io fstream

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

2 个答案:

答案 0 :(得分:41)

不,这是不可能的,至少在符合标准的库实现中是不可能的。

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

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

答案 1 :(得分:22)

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