如果答案很简单,请原谅我,但我不知道是什么原因造成的。 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的输出。

10-08 07:13