【问题标题】:How do I find the directory path of a file I created from ofstream in C++?如何在 C++ 中找到从 ofstream 创建的文件的目录路径?
【发布时间】:2011-03-24 16:44:04
【问题描述】:

我想获取我使用 ofstream 创建的文件的目录。 我写的代码类似于

std::ofstream txt("sample.txt", std::ios::binary);

然后我在txt文件中写入一些东西,然后调用txt.close()关闭ofstream。写作时,我想获取sample.txt文件的位置并将其写入sample.txt。 例如,目录路径是这样的:

/home/usr/Downloads/sample.txt

我想将整个内容保存为字符串,以便将其写入 sample.txt 文件。任何人都可以帮忙吗? 我正在使用 linux 来编写代码,并且一个通用的方法会很好(在 windows、linux、mac 等上工作)。

【问题讨论】:

    标签: c++ ofstream


    【解决方案1】:

    您应该查看Boost.Filesystem 以进行可移植路径处理。 C++ 没有太多的路径,因为您可能在没有文件系统的平台上运行。但是,您可以尝试使用getcwd 并在输出和文件名之间附加“/”来获取一些信息。 getcwd 不是 C 的一部分,但它在 Windows 上以 _getcwd 的形式提供——符合 POSIX 的系统将具有规范的 getcwd。这应该可以工作(但我很确定在某些极端情况下它不会,例如,如果从 UNC 路径运行的话。)

    【讨论】:

      【解决方案2】:

      在 windows 上,我可以帮你。获取工作目录 http://msdn.microsoft.com/en-us/library/sf98bd4y%28v=vs.80%29.aspx

       #include <direct.h>
      
       char cCurrentPath[MAX_PATH];
      _getcwd(cCurrentPath,sizeof(cCurrentPath));
      

      听起来像你要找的东西。

      哦哦哦看这里 What is a cross-platform way to get the current directory?

      【讨论】:

      • 第一个解决方案是 MC++ 吗?我还没有真正接触过扩展的 c++ 库,但我认为这不是一个合理的解决方案,因为我认为他没有使用 MS Tasks:ITask::GetWorkingDirectory()
      • 在获取文件路径字符串时如何实现?
      • cCurrentPath 现在保存当前目录的字符串。加上文件名,你就知道了。
      猜你喜欢
      • 2010-11-25
      • 2011-04-28
      • 2014-03-08
      • 2022-01-24
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      相关资源
      最近更新 更多