std::string怎么转wchar_t *

lshfong 2013-02-21 09:25:32
有直接转的函数吗?请指教下
...全文
1677 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lshfong 2013-02-22
  • 打赏
  • 举报
回复
c_str()转出来是const wchar_t*,类型不对
唯恐天下不乱 2013-02-22
  • 打赏
  • 举报
回复 1
为什么不用std::wstring, 那样可以直接用c_str()转换为wchar_t*
always_learn 2013-02-22
  • 打赏
  • 举报
回复

string mystring = "test";
	int mystringSize = (int)(mystring.length()+1);
	wchar_t* mywstring = new wchar_t[mystringSize];
	MultiByteToWideChar( CP_ACP, 0, mystring.c_str(), -1, mywstring, mystringSize );
	//use mywstring to do:
	delete [] mywstring;
lshfong 2013-02-22
  • 打赏
  • 举报
回复
能给出示例代码吗
无猫皆笼 2013-02-22
  • 打赏
  • 举报
回复
引用 4 楼 lshfong 的回复:
c_str()转出来是const wchar_t*,类型不对
你copy一份非const版本的
赵4老师 2013-02-22
  • 打赏
  • 举报
回复
如果字符串内的字符对应的ASCII码都小于128的话,参考下面:
string s="123";
char a[4];
wchar_t w[4];
wchar_t *pw;
strcpy(a,s.c_str());
for (int i=0;i<4;i++) w[i]=(wchar_t)a[i];
pw=w;
helloleoking 2013-02-21
  • 打赏
  • 举报
回复
第一种方法(标准库): mbstowcs 用之前需要设置locale 第二种方法(windows api): MultiByteToWideChar 具体使用方法 谷歌百度就行了
imwangxiaoxin 2013-02-21
  • 打赏
  • 举报
回复
我用过这个东西,就是TEXT("hello"),或者L"hello",TEXT()括号里可能可以放任一的string吧,我没试过

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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