C++中的字符串,TCHAR*类型如何转wchar_t*类型?
想要获取DLL路径,但是返回值szBuffer是TCHAR*类型的,如何返回wchar_t*类型的字符串?wchar_t*__stdcallcGetModulePath(...
想要获取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*类型并返回
} 展开
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*类型并返回
} 展开
展开全部
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这组宏。
宽字节转多字节 :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这组宏。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
说法是2000多
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询