我正在尝试执行以下代码,但是我收到一条错误,说“表达式:字符串下标超出范围”。
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,正在为它分配内存,这可能就是问题。
任何人都可以帮我这个吗?
答案 0 :(得分: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);
}