2011-12-20 8 views
0

次のコードを実行しようとしていますが、 "expression:string subscript from range"というエラーが表示されます。_fullPathとwidecharの文字列

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のためのワイド文字列へのポインタを期待し、それは私が(私が間違っているなら、私を修正)で渡しているまさにです。 私は単純にwstringとしてabsPathを宣言し、メモリが割り当てられており、それが問題であるかどうかはわかりません。

誰でも私にこれを手伝うことができますか?

答えて

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); 
} 
関連する問題