Я хотел бы преобразовать массив TCHAR в wstring.
TCHAR szFileName[MAX_PATH+1];
#ifdef _DEBUG
std::string str="m:\\compiled\\data.dat";
TCHAR *param=new TCHAR[str.size()+1];
szFileName[str.size()]=0;
std::copy(str.begin(),str.end(),szFileName);
#else
//Retrieve the path to the data.dat in the same dir as our data.dll is located
GetModuleFileName(_Module.m_hInst, szFileName, MAX_PATH+1);
StrCpy(PathFindFileName(szFileName), _T("data.dat"));
#endif
wstring sPath(T2W(szFileName));
Мне нужно передать szFileName
функции, которая ожидает
const WCHAR *
Для полноты я указываю пустоту, которую мне нужно передать szFileName
:
HRESULT CEngObj::MapFile( const WCHAR * pszTokenVal, // Value that contains file path
HANDLE * phMapping, // Pointer to file mapping handle
void ** ppvData ) // Pointer to the data
Однако T2W у меня не работает. Компилятор говорит that "_lpa" is not defined
, и я не знаю, что делать дальше. Я пробовал другие методы преобразования, которые нашел в сети, но они тоже не сработали.
TCHAR
заключается в том, что всегда используйте функции tchar и подобные подпрограммы.std::copy
не совсем правильный способ преобразования междуTCHAR
иstd::string
. Один из самых простых способов выразитьLPCTSTR szFileName = _T("m:\\compiled\\data.dat");
Вам не нужен этот сложный код копирования. Если хотите вариант unicodeLPCWSTR szFileName = L"m:\\compiled\\data.dat"
; - person sarat   schedule 04.04.2013