我使用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 ++程序。请帮忙。
你需要使用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"
...