猿问

请问该如何返回wchar_t*类型的字符串?

想要获取DLL路径,但是返回值szBuffer是TCHAR*类型的,如何返回wchar_t*类型的字符串?
wchar_t* __stdcall cGetModulePath()
{
HMODULE hMod = GetModuleHandle(_T("mydll.dll"));
TCHAR szBuffer[MAX_PATH] = { 0 };
if (hMod != NULL)
{
GetModuleFileName(hMod, szBuffer, sizeof(szBuffer) / sizeof(TCHAR) - 1);
OutputDebugString(szBuffer);
}
return (szBuffer); //需要在这里把szBuffer转为wchar_t*类型并返回
}

当年话下
浏览 180回答 1
1回答

千巷猫影

1、TCHAR 是宽字节的,string没有具体的说明的话应该是窄字节的,类型会不匹配的。宽字节转多字节 :WideCharToMultiByte //其实这里的多字节就是char多字节转宽字节 :MultiByteToWideChar //多字节也就是ASCII单字节2、TCHAR是一种字符串类型,它让你在以MBCS和UNNICODE来build程序时可以使用同样的代码,不需要使用繁琐的宏定义来包含你的代码。TCHAR的引入,主要是在Tchar.h文件中,该文件包含这方面的重要的定义信息。对于包含了对str函数或wcs函数进行显式调用的代码来说,无法非常容易地同时为ANSI和Unicode对这些代码进行编译。本章前面说过,可以创建同时为ANSI和Unicode进行编译的单个源代码文件。若要建立双重功能,必须包含TChar.h文件,而不是包含String.h文件。TChar.h文件的唯一作用是帮助创建ANSI/Unicode通用源代码文件。它包含应该用在源代码中的一组宏,而不应该直接调用str函数或者wcs函数。如果在编译源代码文件时定义了_UNICODE,这些宏就会引用wcs这组函数。如果没有定义_UNICODE,那么这些宏将引用str这组宏。
随时随地看视频慕课网APP
我要回答