_fullPath和widechar字符串

时间:2011-12-20 16:13:56

标签: string winapi path

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

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,正在为它分配内存,这可能就是问题。

任何人都可以帮我这个吗?

1 个答案:

答案 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);
}