如何用c++获取当前程序自身的完整路径

如何用c++获取当前程序自身的完整路径,第1张

用GetModuleFileName这个函数就可以做到了,完整代码如下,自己编译运行下就知道了

#include <stdioh>

#include <windowsh>

int main()

{

char ExeFile[200];

//得到当前文件路径

GetModuleFileName(NULL,ExeFile,200);

printf("当前文件路径为:\n");

printf("%s\n",ExeFile);

return 0;

}

假设当前目录下有一个 testtxt 文件,

输出文件的绝对路径:

#include <directh>

#include <stringh>

#include <stdioh>

#include <stdlibh>

#define MAXPATH 260

int main()

{

char buffer[MAXPATH];

getcwd(buffer, MAXPATH);

strcat(buffer, "\\testtxt ");

printf( "The directory is: %s\n ", buffer);

system( "PAUSE ");

return 0;

}

至于你说的D:\Testdb,只要把

getcwd(buffer, MAXPATH);

strcat(buffer, "\\testtxt ");

这两句改成buffer==“D:\\Textdb";即可

你没有理解项目和程序的区别。

实际运行的程序是没有所谓项目的概念的(不可能把源代码也复制过去吧?!),也就是说,你的应用程序运行时的目录下一开始是不会自动地产生ClientPhoto这个文件夹的(除非你在项目里将这个文件夹中的文件设置为“复制到输出目录”。)

所以你要做的,第一件事就是先获取应用程序的路径,然后判断这个路径下的目录存在不存在,如果不存在,要首先创建一个。

我们知道“ClientPhoto”其实只是一个相对路径而已,要获得绝对路径,首先要知道应用程序当前的绝对路径:只需要检索SystemWindowsFormsApplicationStartupPath这个属性即可。

string path = SystemWindowsFormsApplicationStartupPath;

然后将应用程序当前路径path和字符串“ClientPhoto”组合成为一个完整的文件夹绝对路径folder(这时候就是绝对路径了,但是,还没完!)。

string folder = SystemIOPathCombine(path, "ClientPhoto");

接着判断 folder 指定的文件夹是否存在。

bool folderExists = SystemIODirectoryExists(folder);

如果文件夹不存在,则创建它。如果创建不了,会引发异常,请自行捕捉这个异常。

if(!folderExists)

{

    SystemIODirectoryCreateDirectory(folder);

}

最后才返回路径 folder。

完整代码:

private string GetFolderPath()

{

    string folder = PathCombine(ApplicationStartupPath, "ClientPhoto");

    if(!DirectoryExists(folder))

    {

        DirectoryCreateDirectory(folder);

    }

    return folder;

}

以上就是关于如何用c++获取当前程序自身的完整路径全部的内容,包括:如何用c++获取当前程序自身的完整路径、c++ 获取文件全路径、C# 获取项目下文件夹路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9642692.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存