1
编写的工程项目有如下需求:
获取当前工程所在目录的绝对路径
2
使用<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;
}
3
所在库:<Windows.h>
函数原型:
DWORD GetCurrentDirectory(
[in] DWORD nBufferLength,
[out] LPTSTR lpBuffer
);
参数说明:
[in] nBufferLength
:存储目录字符串的缓冲区长度,以TCHARs为单位,需要包括终止字符NULL的空间
[out] lpBuffer
:指针,指向一块缓冲区,用于接收结果(当前目录绝对路径)字符串,以NULL为结尾。
返回值
执行成功:返回写入缓冲区的字符数(不包括终止null);
执行失败:返回值为0;
缓冲区不够大时将返回指定缓冲区所需大小,以字符为单位(包括终止null)。
故可以通过GetCurrentDirectory(0, NULL);
获取缓冲区所需大小,再进行缓冲区初始化完成创建。
参考:GetCurrentDirectory function (winbase.h)
4
报错
使用 Visual Studio 2019 编译器,出现报错"char *"类型的实参与"LPWSTR"类型的形参不兼容
。
原因
字符集问题,具体可检索查阅。
解决
配置解决方案的属性,在(配置属性->高级->高级属性)中找到字符集,将其更改为使用多字节字符集
。
保姆级操作教程:顶部功能栏中点击
视图
,选择点击解决方案资源管理器
,右键点击解决方案名称(工程名),选择属性
,进入上图属性配置页
。余下按图配置即可。
5
关于返回结果需要注意:
使用release x64编译时候,返回的是cpp文件所在路径;
执行exe文件时候,返回的是可执行文件所在目录。
编译运行结果
可执行文件执行结果
命名混乱是因为随便搞的,有点蠢,敬请忽略吧[捂脸]。