如何在 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++ read()-ing 从一个套接字到一个 ofstream