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*类型并返回
}
展开
 我来答
安贞高峰
2018-04-13 · TA获得超过3068个赞
知道小有建树答主
回答量:2680
采纳率:75%
帮助的人:189万
展开全部
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这组宏。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
最后才知道的痛aP
2018-04-13 · TA获得超过437个赞
知道答主
回答量:411
采纳率:29%
帮助的人:72.5万
展开全部
说法是2000多
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式