首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在c++中获取appdata/local/<MyProgramFolder>/ path

问如何在c++中获取appdata/local/<MyProgramFolder>/ path
EN

Stack Overflow用户
提问于 2019-03-14 16:42:27
回答 1查看 219关注 0票数 0

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

代码语言:javascript
复制
QString appdata = getenv("appdata");
appdata += "\\DoDLog.log";
fstream stud;
stud.open(appdata.toStdString().c_str(), ios::app);

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

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

EN

回答 1

Stack Overflow用户

发布于 2019-03-14 16:47:47

您需要使用SHGetSpecialFolderLocation

这是一个C语言的解决方案,它应该不难适应C++,QString,std::string或其他任何语言。

代码语言:javascript
复制
#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"
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55158151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档