我可以從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. 從路徑獲取文件夾名稱
- 4. 如何從路徑獲取文件名?
- 5. 從路徑名獲取文件struct
- 6. 從JavaScript路徑獲取文件名
- 7. 從完整路徑獲取文件名
- 8. 從路徑獲取文件名
- 9. 從fd獲取文件路徑/名稱
- 10. 獲取文件路徑的文件名
- 11. RegEx從代碼需要路徑獲取路徑和文件名
- 12. 從文件名獲得文件路徑
- 13. 從uri獲取文件名和路徑作爲文本文件
- 14. 從文件路徑獲取文件目錄路徑
- 15. 獲取路徑和附加文件名
- 16. htaccess獲取文件名無路徑
- 17. 從Python的文件路徑獲取文件名
- 18. 如何從文件名獲取文件路徑和目錄?
- 19. 如何從文件描述符獲取文件名和路徑?
- 20. 從完整文件路徑獲取文件夾名稱
- 21. 無法從文件路徑獲取文件名
- 22. 如何從文件路徑獲取父文件夾的名稱?
- 23. 從文件名獲得路徑
- 24. 如何從ls中獲取全名,路徑和文件名?
- 25. 如何從給定的inode獲取路徑名或dentry或struct文件?
- 26. 從本地路徑或映射路徑獲取UNC路徑
- 27. CQ5 - 如何獲取呈現的JSP路徑或文件名
- 28. 從資產獲取文件路徑url
- 29. 從Resources.resx獲取文件的路徑
- 30. 從GtkTreeView獲取完整文件路徑
我不認爲這是可能的。底層文件可能有多個名稱(如果它有多個硬鏈接)或根本沒有名稱(例如,如果它代表一個匿名管道)。 –