如果答案很简单,请原谅我,但我不知道是什么原因造成的。 PathCombineA函数以某种方式修改了mypath变量。如果您运行该程序,您将明白我的意思。 (您必须链接Shlwapi.lib)
#include <Windows.h>
#include <Shlwapi.h>
#include <iostream>
using namespace std;
int main()
{
CHAR temp[MAX_PATH];
CHAR mypath[MAX_PATH];
GetModuleFileNameA(NULL, mypath, MAX_PATH);
GetTempPathA(MAX_PATH, temp);
LPSTR name = PathFindFileNameA(mypath);
cout << mypath << endl;
PathCombineA(name, temp, name);
cout << mypath << endl;
getchar();
return 0;
}
PathCombineA之前的输出
C:\ Users \ Owner \ Desktop \ etc \ Debug \ etc.exe
PathCombineA之后的输出
C:\ Users \ Owner \ Desktop \ etc \ Debug \ C:\ Users \ Owner \ AppData \ Local \ Temp \ etc.exe
如果你们有什么想法,请告诉我!
谢谢!
最佳答案
PathFindFileNameA返回指向mypath中字符串最后部分的指针。
然后,您将该指针作为路径参数的输出参数传递到mystring缓冲区中。
如果您不希望修改mystring,则需要另一个缓冲区来保存PathCombineA的输出。