我想将 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 对我不起作用。编译器说 “_lpa” 未定义
,我不知道从哪里开始。我尝试了其他我在网上找到的转换方法,但它们都没有用。
最佳答案
有类似的功能
mbstowcs_s()
将 char*
转换为 wchar_t*
。
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
char *orig = "Hello, World!";
cout << orig << " (char *)" << endl;
// Convert to a wchar_t*
size_t origsize = strlen(orig) + 1;
const size_t newsize = 100;
size_t convertedChars = 0;
wchar_t wcstring[newsize];
mbstowcs_s(&convertedChars, wcstring, origsize, orig, _TRUNCATE);
wcscat_s(wcstring, L" (wchar_t *)");
wcout << wcstring << endl;
关于C++ TCHAR 数组到 wstring 在 VS2010 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15786068/