我正在使用 SHGetSpecialFolderLocation API 函数。我的应用程序设置为“使用 Unicode 字符集”。

这是我到目前为止所拥有的:

int main ( int, char ** )
{
    LPITEMIDLIST pidl;
    HRESULT hr = SHGetSpecialFolderLocation(NULL, CSIDL_PERSONAL, &pidl);


    /* Confused at this point */
    wstring wstrPath;

    wstrPath.resize ( _MAX_PATH );
    BOOL f = SHGetPathFromIDList(pidl, wstrPath.c_str () );
    /* End confusion */

我得到的错误是:
error C2664: 'SHGetPathFromIDListW' : cannot convert parameter 2 from 'const wchar_t *' to 'LPWSTR'

有人可以帮忙吗?执行此操作的正确 C++ 方法是什么?

谢谢!

最佳答案

第二个参数是一个 out 参数,所以你不能直接传递 c_str (即 const )。这样做可能是最简单的:

wchar_t wstrPath[MAX_PATH];
BOOL f = SHGetPathFromIDList(pidl, wstrPath);
MAX_PATH 目前是 260 个字符。

关于C++:在 API 函数中使用 std::wstring,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3137267/

10-14 11:00