fstream
我可以从对象中获取文件名或其路径吗?我查看了的方法fstream
并没有找到任何接近它的东西。
问问题
47896 次
2 回答
50
不,这是不可能的,至少在符合标准的库实现中是不可能的。
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
//...
}
或者,也简单地传递文件名。
于 2012-05-27T11:04:11.550 回答
30
你也可以设计一个小类,它继承自fstream
a 并且行为类似于 a fstream
,但也存储它的文件名。
于 2012-05-27T11:34:09.240 回答