我可以从fstream
对象获取文件名或路径吗?我查看了fstream
的方法,没有发现任何与之相近的东西。从fstream获取文件名(或路径)
35
A
回答
33
不,这是不可能的,至少在库的标准符合性实现中是不可能的。
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
//...
}
或者,干脆绕过文件名也。
+0
这看起来没错,只有你需要说,一旦fstream对象被破坏,名称必须被删除... –
20
你也可以设计一个继承自fstream
的小类,其行为像一个fstream
,但也存储它的文件名。
+7
这也允许你添加一个方便的构造函数,它需要一个'std :: string', C++ 11,但通常不在C++ 03实现中。 –
相关问题
- 1. 从文件路径获取文件名
- 2. 从路径获取文件夹名称
- 3. 从JavaScript路径获取文件名
- 4. 从路径获取文件名
- 5. 如何从路径获取文件名?
- 6. 从完整路径获取文件名
- 7. 获取文件路径的文件名
- 8. RegEx从代码需要路径获取路径和文件名
- 9. 从文件名获得文件路径
- 10. 从文件路径获取文件目录路径
- 11. htaccess获取文件名无路径
- 12. 获取路径和附加文件名
- 13. 如何从文件名获取文件路径和目录?
- 14. 从完整路径获取文件的文件名?
- 15. 从完整文件路径获取文件夹名称
- 16. 如何从文件路径获取父文件夹的名称?
- 17. 如何从给定的inode获取路径名或dentry或struct文件?
- 18. 从本地路径或映射路径获取UNC路径
- 19. CQ5 - 如何获取呈现的JSP路径或文件名
- 20. 获取文件的路径从项目
- 21. 如何从URI获取文件路径?
- 22. 从GtkTreeView获取完整文件路径
- 23. 从php中获取文件路径?
- 24. 从Resources.resx获取文件的路径
- 25. Java - 从文件路径获取映像
- 26. 从文件路径获取IVsTextLines
- 27. 如何从文件URL获取路径?
- 28. 从inputstream获取文件路径?
- 29. Xamarin.Android:从CacheDir获取文件路径
- 30. 从路径组获取文件ForResourcesOfType
我不认为这是可能的。底层文件可能有多个名称(如果它有多个硬链接)或根本没有名称(例如,如果它代表一个匿名管道)。 –