繁体   English   中英

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

[英]How get file path from std::ifstream in c++

我使用std::ifstream打开一个文件。

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

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

在使用std::ifstream成功打开文件后,有人能告诉我如何获取绝对路径吗?

例如:

std::ifstream file(strFile); // strFile is "file.txt" or "C:\test\file.txt"

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

谢谢,

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

但是,你可以做的是:

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

     boost::filesystem::path abs_path = boost::filesystem::complete("./rel/path"); std::string abs_path_str = abs_path.string(); 

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

我不认为std :: fstream是可能的。 我在Windows上以FILE *(以非便携方式)进行了此操作。 从文件对象看到文件名

您是否考虑过使用自己的类来扩展ifstream并记住文件名?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM