如何在c ++中从std :: ifstream获取文件路径

Nil*_*nge 24 c++ file absolute-path

我使用打开文件std::ifstream.

我可以使用相对路径(file.txt)或绝对路径(C:\test\file.txt)打开文件.

当我传递一个字符串作为文件名时,我不知道它是相对路径还是绝对路径.

任何人都可以告诉我如何在文件成功打开后获取绝对路径 std::ifstream

例如:

std::ifstream file(strFile); // strFile is "file.txt" or "C:\test\file.txt"
Run Code Online (Sandbox Code Playgroud)

我希望在文件成功打开后获取绝对路径.

谢谢,

Ale*_*x B 19

你不能,std::ifstream不存储这些信息.

但是,你可以做的是:

  1. 使用进程的当前工作目录自己组成绝对路径,或者
  2. 使用像Boost.Filesystem库这样的库来在相对路径和绝对路径之间进行转换.

    boost::filesystem::path abs_path = boost::filesystem::complete("./rel/path");
    std::string abs_path_str = abs_path.string();
    
    Run Code Online (Sandbox Code Playgroud)


小智 4

fstream 类没有访问或处理用于打开文件的名称的功能,并且 C++ 标准库没有文件名处理功能 - 您必须自己编写代码,或使用第三方库或操作系统 -提供的功能。