在尝试存储folderpath时获取访问冲突,LPSTR / String转换中可能出错

时间:2018-05-27 09:17:14

标签: c++ windows

我正在尝试获取本地Appdata文件夹,并将其存储在字符串中。我似乎对我的变量做错了,因为当我尝试将文件夹路径存储到字符串中时,我收到了访问冲突。

代码:

PSTR buffer;
HRESULT hRes = SHGetSpecialFolderPathA(NULL, buffer, CSIDL_APPDATA, FALSE);
std::string executingPathFolder = buffer;

1 个答案:

答案 0 :(得分:0)

让我们看一下MSDN

  

lpszPath [out]

     

指向以null结尾的字符串的指针,该字符串接收指定文件夹的驱动器和路径。此缓冲区的大小必须至少为MAX_PATH个字符。

你必须小心WinAPI - 一些返回缓冲区的方法会分配它们,有些像写入分配的缓冲区。请看这里如何从LPSTR How do I convert from LPCTSTR to std::string?

构造std :: string