我如何获得appdata / local / / c ++中的路径

问题描述 投票:0回答:1

我使用fstream并使用getenv来获取appdata的路径。我使用了以下代码,但它在appdata / roaming /上输出

QString appdata = getenv("appdata");
appdata += "\\DoDLog.log";
fstream stud;
stud.open(appdata.toStdString().c_str(), ios::app);

我想要发生的是appdata / local // DoDLog.log的路径

MyProgram是我一直在运行的c ++程序。请帮忙。

c++ winapi
1个回答
0
投票

你需要使用SHGetSpecialFolderLocation

这是一个C解决方案,它应该不难适应C ++,QStringstd::string或其他任何东西。

#include <shlobj.h>
...
HRESULT GetFolderLocation (int csidl, char* buffer)
{
  LPITEMIDLIST pidl = 0;      
  HRESULT result = SHGetSpecialFolderLocation(NULL, csidl, &pidl);      
  *buffer = 0 ;

  if (result == 0)
  {
      SHGetPathFromIDList(pidl, buffer);
      CoTaskMemFree(pidl);
  }

  return result;
}

...
char str[_MAX_PATH];
GetFolderLocation(CSIDL_LOCAL_APPDATA, str);
// now str contains "C:\Users\<user>\AppData\Local"
...
© www.soinside.com 2019 - 2024. All rights reserved.