21xrx.com
2024-06-03 02:11:11 Monday
登录
文章检索 我的文章 写文章
C++如何获取“程序文件”目录
2023-07-08 15:48:47 深夜i     --     --
C++ 获取 程序文件 目录

在C++中,我们需要时常获取程序所在的目录,这些目录通常包括程序文件夹、配置文件夹和日志文件夹等等,这些目录都是程序运行过程中必须要使用的。那么在C++中如何获取“程序文件”目录呢?在本文中,我们将介绍如何使用C++获取“程序文件”目录的方法。

首先介绍一下C++中的函数GetModuleFileName,这个函数可以获取当前程序文件的路径。该函数位于Windows API中,接受三个参数,分别是程序模块的句柄、指向接收路径字符串的缓冲区和缓冲区大小。第一个参数通常上直接设为NULL即可,第二个参数指向用于接收文件路径的字符型指针,第三个参数是缓冲区的大小,也就是程序文件路径的最大长度。如果函数执行成功,返回值为包含该程序文件的绝对路径的字符数量。 否则,返回值是一个错误代码。

以下是获取当前程序文件路径的代码:


#include <iostream>

#include <Windows.h>

int main() {

  TCHAR szPath[MAX_PATH];

  GetModuleFileName(NULL, szPath, MAX_PATH);

  std::wcout << szPath << std::endl;

  return 0;

}

上述代码中的MAX_PATH是Windows API定义的一个常量,代表一个文件的路径最大长度。该常量的值为260。

在得到了当前程序文件的路径之后,我们就可以通过处理这个字符串来得到该程序所在的路径了。具体的方法如下:


#include <iostream>

#include <Windows.h>

int main() {

  TCHAR szPath[MAX_PATH];

  GetModuleFileName(NULL, szPath, MAX_PATH);

  std::wstring fullPath(szPath);

  size_t pos = fullPath.find_last_of(L"\\/");

  std::wstring filePath = fullPath.substr(0, pos);

  std::wcout << filePath << std::endl;

  return 0;

}

在上述代码中,我们首先用find_last_of()函数来找到最后一个反斜杠或斜杠的位置,这个位置实际上就是文件所在的目录。通过substr()函数,我们可以把文件名剔除,这样我们就得到了程序所在的目录路径了。最后,我们可以通过std::wcout输出该路径。

以上就是获取“程序文件”目录的方法,可以说是非常简单而且实用的,如果想要获取其他的程序目录路径也可以根据该方法依葫芦画瓢。希望本文能够帮助大家更好的在C++中应用Windows API。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复