C++之获取当前程序的路径、Windows目录的路径和系统目录的路径

在Windows操作系统中,程序的路径、Windows目录的路径和系统目录的路径通常指的是以下三个不同的概念:

当前程序的路径:指的是执行中的程序文件所在的完整路径。例如,如果你的程序名为MyApp.exe,并且它位于C:\Program Files\MyApp\目录下,那么当前程序的路径就是C:\Program Files\MyApp\MyApp.exe。你可以使用Windows API函数GetModuleFileName来获取当前程序的路径。

Windows目录的路径:通常指的是Windows操作系统安装目录的路径。对于大多数现代Windows版本(如Windows 10),Windows目录通常是C:\Windows。你可以使用Windows API函数GetWindowsDirectory来获取Windows目录的路径。

系统目录的路径:通常指的是包含系统关键文件的目录,这些文件用于支持Windows操作系统及其组件的运行。对于Windows,系统目录通常位于C:\Windows\System32(对于32位系统)或C:\Windows\SysWOW64(对于64位系统中的32位应用程序)。你可以使用Windows API函数GetSystemDirectory来获取系统目录的路径。

以下是一个简单的C++程序示例,展示了如何获取并打印当前程序的路径、Windows目录的路径和系统目录的路径:

#include <windows.h>#include <iostream>  void CopySelf(){  // 保存自身程序的路径  wchar_t szSelfName[MAX_PATH] = { 0 };  // 保存Windows目录的路径  wchar_t szWindowsPath[MAX_PATH] = { 0 };  // 保存系统目录的路径  wchar_t szSystemPath[MAX_PATH] = { 0 };  // 临时路径变量  char szTmpPath[MAX_PATH] = { 0 };  GetModuleFileName(NULL, szSelfName, MAX_PATH);  GetWindowsDirectory(szWindowsPath, MAX_PATH);  GetSystemDirectory(szSystemPath, MAX_PATH);  // 打印路径    wprintf(L"Self Path: %s\n", szSelfName);  wprintf(L"Windows Path: %s\n", szWindowsPath);  wprintf(L"System Path: %s\n", szSystemPath);}int main(){  CopySelf();  return 0;}

输出:

Self Path: D:\vs pj\opencascade\helloworld\x64\Debug\helloworld.exe

Windows Path: C:\WINDOWS

System Path: C:\WINDOWS\system32

代码解释:

 <windows.h>:这是Windows API的头文件,它包含了各种Windows系统的函数、数据类型和宏。这些函数用于访问Windows核心功能,例如获取系统目录或当前模块的文件名。  

 <iostream>:这个头文件用于输入/输出流,尽管在这段代码中它并没有被用到,因为所有路径的打印都是通过`wprintf`完成的,而不是`std::cout`。

 wchar_t:这是一个宽字符类型,用于存储Unicode字符。由于Windows API通常使用宽字符,所以这里选择了`wchar_t`。  

MAX_PATH:这是一个常量,定义了Windows系统中文件路径的最大长度。  

 GetModuleFileName(NULL, szSelfName, MAX_PATH);:这个函数调用获取当前模块的完整路径,并将其存储在`szSelfName`数组中。 

 GetWindowsDirectory(szWindowsPath, MAX_PATH);:这个函数调用获取Windows目录的路径,并将其存储在`szWindowsPath`数组中。  

 GetSystemDirectory(szSystemPath, MAX_PATH);:这个函数调用获取系统目录的路径,并将其存储在`szSystemPath`数组中。 

 wprintf:这是一个宽字符版本的`printf`函数,用于打印宽字符字符串。

  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++中,可以使用不同的方法来获取当前路径。其中一种方法是使用Windows.h头文件中的GetCurrentDirectory函数。这个函数的原型是DWORD GetCurrentDirectory(\[in\] DWORD nBufferLength, \[out\] LPTSTR lpBuffer)。你可以在程序中包含Windows.h头文件,并使用GetCurrentDirectory函数来获取当前路径。例如,你可以使用以下代码来获取当前路径: #include <iostream> #include <Windows.h> using namespace std; int main(void) { char buf\[1000\]; GetCurrentDirectory(1000, buf); cout << buf << endl; system("pause"); return 0; } 另一种方法是使用getcwd函数。你可以在程序中包含头文件<direct.h>,并使用getcwd函数来获取当前路径。例如,你可以使用以下代码来获取当前路径: #include <iostream> #include <direct.h> using namespace std; int main(void) { char *buffer; buffer = getcwd(NULL, MAX_PATH); if (buffer != NULL) { cout << buffer << endl; } return 0; } 除了以上两种方法,还可以使用GetModuleFileName函数来获取当前路径。你可以在程序中包含Windows.h头文件,并使用GetModuleFileName函数来获取当前路径。例如,你可以使用以下代码来获取当前路径: #include <iostream> #include <Windows.h> using namespace std; int main(void) { char defaultPath\[MAX_PATH\]; GetModuleFileName(NULL, defaultPath, MAX_PATH); cout << defaultPath << endl; return 0; } 希望这些方法能够帮助到你获取C++ Windows中的当前路径。 #### 引用[.reference_title] - *1* *3* [C++ 获取当前程序路径](https://blog.csdn.net/jg_csdn/article/details/129436817)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【C++获取当前文件所在绝对路径 && GetCurrentDirectory()函数使用详解](https://blog.csdn.net/Miller_6/article/details/125804594)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值