其他分享
首页 > 其他分享> > C:在API函数中使用std :: wstring

C:在API函数中使用std :: wstring

作者:互联网

我正在使用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,wstring,c2664
来源: https://codeday.me/bug/20190724/1518406.html