如何返回cpp文件的目录?

时间:2014-09-30 17:55:17

标签: c++ visual-studio-2013 directory

我正在尝试返回正在运行的cpp文件的路径。有谁知道实现这个的方法或方法?例如,假设我在计算机test.cpp的路径中有此文件"C:\Programming\Visual Studio\Test\Test\test.cpp"

有没有办法在不手动输入的情况下获取此路径?我试图确定一种使用c ++返回此路径的方法。

对于我的ftp程序,我需要获取.txt.pdf,。etc文件的列表,这些文件与.cpp文件位于同一路径。这就是我想要.cpp路径而不是.exe路径的原因。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

正如你在评论中所述:

  

“...但是对于我的ftp程序,我需要获取.txt.pdf等文件的列表,这些文件与{{1}位于同一路径文件。“

您应该定义一种资源目录,该目录是在安装应用程序时创建的,以及安装过程将复制.cpp.txt等文件的位置。

这种方式意味着 你有一个安装过程 (这可能是最简单的形式,通过创建和提取.pdf存档),捆绑了沿着这些资源文件的可执行.zip文件,安装在目标机器上。通常,您不会在那里包含源文件。

在这种情况下,引用源.exe文件的位置实际上是个坏主意,因为最终安装的程序通常没有编译源代码的概念。此程序也可以安装在具有与您不同的环境(特别是开发环境)的计算机上。

通用安装路径的更好入口点是相对于使用.cpp程序条目的argv[0]参数为您提供的路径。它为您提供已安装的可执行文件的完整路径。

对于其他人,请使用以下操作: boost::filesystem library以便携方式操作路径和文件名,如评论中所述。

答案 1 :(得分:1)

这个怎么样?

#include<iostream>
#include <string>
using namespace std;

int main()
{
    string file_path = __FILE__;
    string dir_path = file_path.substr(0, file_path.rfind("\\"));
    cout<<dir_path<<endl;

    return 0;
}