我使用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++程序。请帮帮忙。
发布于 2019-03-14 16:47:47
您需要使用SHGetSpecialFolderLocation
这是一个C语言的解决方案,它应该不难适应C++,QString,std::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"
...https://stackoverflow.com/questions/55158151
复制相似问题