wchar_t* 问题

风子啊啊 2011-08-24 01:15:35
wchar_t *mChar ;
wchar_t *mChar1 ;

AnsiString temp;
mChar=new wchar_t[100];

temp="123456";
mChar=temp.WideChar(mChar,temp.Length()+1);

String a="123456";
mChar1=a.c_str();

mChar与mChar1 应该是一样的结果

Tcpm1->Authen(gwid,mChar);可以
Tcpm1->Authen(gwid,mChar1);不可以,
这是一个控件的方法.
很是奇怪。。我是在用bcb2009版本
...全文
88 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
风子啊啊 2011-08-25
  • 打赏
  • 举报
回复
谢谢妖哥
HELLO456 2011-08-24
  • 打赏
  • 举报
回复
妖哥 就是厉害啊 呵呵
ccrun.com 2011-08-24
  • 打赏
  • 举报
回复
早就说过了,String的.c_str()是特别需要注意的,这个方法返回的地址并不是固定的。
mChar1=a.c_str();
这里记录的mChar1,等再使用的时候,可能已经指向一个非法的区域。

String a = "123456";
Tcpm1->Authen(gwid, a.c_str());

这样是可以的。
缘中人 2011-08-24
  • 打赏
  • 举报
回复
是呀,c_str后const是只读的,具体是怎么个不行法
zzbinfo 2011-08-24
  • 打赏
  • 举报
回复
mChar1=a.c_str();
产生的mChar1是不可写的。有const修饰符。是不是这个造成的

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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