_fullPath и widechar строки - PullRequest
       0

_fullPath и widechar строки

0 голосов
/ 20 декабря 2011

Я пытаюсь выполнить следующий код, но получаю сообщение об ошибке «выражение: строковый индекс вне диапазона».

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 Ответ

1 голос
/ 20 декабря 2011

Попробуйте:

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...