如何在 C++ 中找到从 ofstream 创建的文件的目录路径?

Posted

技术标签:

【中文标题】如何在 C++ 中找到从 ofstream 创建的文件的目录路径?【英文标题】:How do I find the directory path of a file I created from ofstream in C++? 【发布时间】: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 等上工作)。

【问题讨论】:

【参考方案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 现在保存当前目录的字符串。加上文件名,你就知道了。

以上是关于如何在 C++ 中找到从 ofstream 创建的文件的目录路径?的主要内容,如果未能解决你的问题,请参考以下文章

请求用户输入以命名使用 ofstream C++ MFC 创建的文件

C++ ofstream向文件写数据?

C++ read()-ing 从一个套接字到一个 ofstream

C++中,ifstream和ofstream定义文件流的区别

C++的ofstream与ifstream使用

C++文件读写详解(ofstream,ifstream,fstream)