【问题标题】:_fullPath and widechar strings_fullPath 和widechar 字符串
【发布时间】:2011-12-20 16:13:55
【问题描述】:

我正在尝试执行以下代码,但收到错误消息“表达式:字符串下标超出范围”。

wstring relPath = L"..\new\test.txt";
wstring absPath;

_wfullpath(&absPath[0],&relPath[0],_MAX_PATH);

_wfullpath(wchar_t *absPath,const wchar_t *relPath, size_t maxLength) 需要一个指向 absPath 和 relPath 的宽字符字符串的指针,这正是我要传递的内容(如果我错了,请纠正我)。 我不确定是否只是将 absPath 声明为 wstring,正在为其分配内存,这可能是问题所在。

谁能帮我解决这个问题?

【问题讨论】:

    标签: string winapi path


    【解决方案1】:

    试试:

    std::wstring relPath = L"..\\new\\test.txt"; // Escape backslashes.
    std::wstring absPath;
    
    wchar_t* absPathBuf = _wfullpath(0, relPath.c_str(), _MAX_PATH );
    if (0 != absPathBuf)
    {
        absPath = absPathBuf;
        // delete[] absPathBuf; <-- This was wrong, malloc() is used by _wfullpath()
        free(absPathBuf);
    }
    

    【讨论】:

      猜你喜欢
      • 2022-01-25
      • 2013-03-01
      • 1970-01-01
      • 2011-06-23
      • 2012-12-16
      • 2012-12-25
      • 2023-04-08
      • 2012-01-17
      • 1970-01-01
      相关资源
      最近更新 更多