Pav*_*yan 45 c++ file-io fstream
我可以从fstream对象获取文件名或路径吗?我查看了方法,fstream但没有找到任何接近它的方法.
Naw*_*waz 42
不,这是不可能的,至少在符合标准的库实现中是这样.
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
//...
}
Run Code Online (Sandbox Code Playgroud)
或者,也只是传递文件名.
Wal*_*ter 24
你也可以设计一个继承自fstreams和行为的小类,fstream但也存储它的文件名.