Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何获取现有文件的路径?_C++_File_Path - Fatal编程技术网

C++ 如何获取现有文件的路径?

C++ 如何获取现有文件的路径?,c++,file,path,C++,File,Path,我正在创建一个文件流,如下所示: ofstream myfile; myfile.open(fileName); 现在,如何获取名为fileName的文件的完整路径?请注意,fileName可以是相对路径,而不是完整路径 有什么想法吗?见: 没有方法检索用于打开流的路径。您必须自己跟踪fileName 编辑:自我回答问题后,该问题已被编辑。使用C++17可以从相对路径获取绝对路径。请参阅。请参阅: 没有方法检索用于打开流的路径。您必须自己跟踪fileName 编辑:自我回答问题后,该问题已被编

我正在创建一个文件流,如下所示:

ofstream myfile;
myfile.open(fileName);
现在,如何获取名为
fileName
的文件的完整路径?请注意,
fileName
可以是相对路径,而不是完整路径

有什么想法吗?

见:

没有方法检索用于打开流的路径。您必须自己跟踪
fileName

编辑:自我回答问题后,该问题已被编辑。使用C++17可以从相对路径获取绝对路径。请参阅。

请参阅:

没有方法检索用于打开流的路径。您必须自己跟踪
fileName


编辑:自我回答问题后,该问题已被编辑。使用C++17可以从相对路径获取绝对路径。请参阅。

如果您有权访问C++17,则可以使用新标题。如示例所示:

#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
    std::cout << "Current path is " << fs::current_path() << '\n';
}

如果您有权访问C++17,则可以使用新标题。如示例所示:

#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
    std::cout << "Current path is " << fs::current_path() << '\n';
}


你可以使用C++17吗?他们已经安装了visual Studio 15,我们可以使用它支持的任何代码。你必须使用visual Studio 2017的RTM版本,并使用/std:latest(或类似选项)进行编译,以获得实验性的C++17支持。我可以下载visual Studio 2017,但我在大学尝试编译代码时会遇到问题,所以我必须使用2015版本…你能使用C++17吗?他们已经安装了visual Studio 15,我们可以使用它支持的任何代码。你必须使用visual Studio 2017的RTM版本,并使用/std:latest(或类似选项)编译以获得实验性的C++17支持。我可以下载visual Studio 2017,但我在大学里编译代码时会遇到问题,所以我必须使用2015版…我需要一些通用的作业,我在家里做这件事,但它将在大学进行测试…教授希望我们生成保存文件的路径..你确定没有其他方法吗?@IgorBeracka提供了有关文件系统的新功能。我还不是100%熟悉它,但我现在不知道有什么功能可以让你从std::ofstream中恢复路径。@IgorBeracka我已经更新了我的答案以回答编辑后的问题。@IgorBeracka如果你愿意将自己限制在一个平台或编译器中,还有其他可能的解决方案。我需要一些通用的解决方案家庭作业,我在家里做这件事,但它将在大学进行测试……教授希望我们生成保存文件的路径……你确定没有其他方法吗?@IgorBeracka提供了有关文件系统的新功能。我还不是100%熟悉它,但我现在不知道有什么功能可以让你从std::ofstream中恢复路径。@IgorBeracka我已经更新了我的答案来回答编辑后的问题。@IgorBeracka如果你愿意将自己限制在一个平台或编译器中,还有其他可能的解决方案。OP想知道完整的答案
文件名的路径
,不是可执行文件的路径。@raket1111是的,我想知道文件名的完整路径,等等。C:\Directory\fileNameOK,用未测试的代码更新以获得完整路径。OP想知道
文件名
的完整路径,不是可执行文件的完整路径。@raket1111是的,我想知道文件名的完整路径,etc.C:\Directory\fileNameOK,使用未测试的代码更新以获取完整路径。
boost::filesystem::path full_path( boost::filesystem::current_path() );
std::cout << "Current path is : " << full_path << std::endl;