关于string转换为TCHAR*的问题

denglei0710 2013-05-02 02:24:55
我先吧string转化成wchar 用MultiByteToWideChar这个函数,然后把得到的wchar.c_str()强制转换为TCHAR*,虽然对了 但是在末尾都会执行 ~basic_string() 然后就把我的TCHAR*变量清除了 请问各位大神 我哪一步错了?
{ // destroy the string
_Tidy(true);
}
...全文
735 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hemmingway 2013-05-02
  • 打赏
  • 举报
回复

//-------------------------------------------------------------------------------------
std::wstring STR_A2W (const char* p)
{
	std::wstring   ws ;
	if (p)
	{
#if (defined(_WIN32) || defined(__WIN32__))
		int   nCount = MultiByteToWideChar(CP_THREAD_ACP, 0, p, -1, NULL, 0) ;
		if (nCount)
		{
			std::vector<wchar_t>   wps (nCount+1) ;
			MultiByteToWideChar(CP_THREAD_ACP, 0, p, -1, &wps[0], nCount) ;
			ws = &wps[0] ;
		}
#else
		size_t   nCount = strlen(p) ;
		std::vector<wchar_t>   wps (nCount+1) ;
		setlocale (LC_CTYPE, "") ;
		mbstowcs (&wps[0], p, nCount) ;
		ws = &wps[0] ;
#endif
	}
	return ws ;
}
nirvana_newbie 2013-05-02
  • 打赏
  • 举报
回复
引用 2 楼 denglei0710 的回复:
[quote=引用 1 楼 akirya 的回复:] 转换是对的 在执行~basic_string 前拷贝一份
请问下能不能告诉稍微具体点的方法[/quote] 重新定义一个变量,TCHAR *s_new;*s_new=*s_old;//*s_old就是你转换出来的值。
denglei0710 2013-05-02
  • 打赏
  • 举报
回复
引用 1 楼 akirya 的回复:
转换是对的 在执行~basic_string 前拷贝一份
请问下能不能告诉稍微具体点的方法
  • 打赏
  • 举报
回复
转换是对的 在执行~basic_string 前拷贝一份

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧