我正在创建一个文件流,如下所示:
ofstream myfile;
myfile.open(fileName);
现在如何获取名为fileName
的文件的完整路径?请注意,fileName
可以是相对路径,而不是完整路径。
有什么想法吗?
答案 0 :(得分:2)
没有方法可以检索用于打开流的路径。您必须自己跟踪fileName
。
编辑:问题已经编辑,因为我回答了它。使用C ++ 17可以从相对路径获取绝对路径。请参阅std::filesystem::absolute。
答案 1 :(得分:2)
如果您有权访问C ++ 17,则可以使用新的<filesystem>
标头。如示例所示:
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
std::cout << "Current path is " << fs::current_path() << '\n';
}
对于已知文件,可以使用以下内容:
#include <iostream>
#include <filesystem>
#include <string>
namespace fs = std::filesystem;
int main()
{
std::string fileName("foo.txt"); // From example in question
auto filePath = fs::path(fileName);
std::cout << "Absolule path for " << fileName << " is " << fs::absolute(filePath) << '\n';
}
注意:我实际上没有C ++ 17编译器来验证这个......
如果您需要早期C ++版本的解决方案,请尝试boost::filesystem
:
boost::filesystem::path full_path( boost::filesystem::current_path() );
std::cout << "Current path is : " << full_path << std::endl;