String _fullPath和widechar字符串

String _fullPath和widechar字符串,string,winapi,path,String,Winapi,Path,我正试图执行以下代码,但出现了一个错误,即“表达式:字符串下标超出范围” \u wfullpath(wchar\u t*absPath,const wchar\u t*relPath,size\u t maxLength)需要一个指向absPath和relPath的宽字符字符串的指针,这正是我要传递的内容(如果我错了,请纠正我)。 我不确定仅仅将absPath声明为wstring,是否为其分配了内存,这可能就是问题所在 有人能帮我吗 试试看: std::wstring relPath = L".

我正试图执行以下代码,但出现了一个错误,即“表达式:字符串下标超出范围”

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

有人能帮我吗

试试看:

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);
}
std::wstring relPath=L“.\\new\\test.txt”;//避开反斜杠。
std::wstring absPath;
wchar_t*absPathBuf=_wfullpath(0,relPath.c_str(),_MAX_PATH);
如果(0!=absPathBuf)
{
absPath=absPathBuf;
//删除[]absPathBuf;
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);
}