Can I get a file name or its path from a fstream
object? I looked through the methods of fstream
and didn't find anything close to it.
ofstream never creates directories. In fact, C++ doesn't provide a standard way to create a directory. Your could use dirname and mkdir on Posix systems, or the Windows equivalents, or Boost.
No, that is not possible, not at least in the Standard conformant implementation of the library.
The fstream class doesn't store the filename, and doesn't provide any function for retrieving it.
So one way to keep track of this information is to use std::map
as:
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 //... }
Or, simply pass around the filename as well.
you may also design a little class which inherits from fstream
and behaves like a fstream
but also stores its file name.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With