如何给wchart**赋值

son 2009-09-14 07:38:44
int call_array( wchar_t** files, int length ) {
setlocale(LC_ALL,"japanese");
for ( int i=0; i<length; i++ ) {
wprintf(L"%d: %s\n",i,*(files+i));
}

//以上代码没有问题。
std::wstring message1_ = L"红果1";
std::wstring message2_ = L"鸭梨2";
*files = &((wchar_t*)message1_.c_str());
*files = &{ (wchar_t*)message1_.c_str(), (wchar_t*)message2_.c_str() };
wchar_t* messages_[2] = { (wchar_t*)message1_.c_str(), (wchar_t*)message2_.c_str() };
//int ret_ = callback(messages_, sizeof(messages_)/sizeof(messages_[0]));

return 10;

}
我想把传进来的值改变以后,在传回去。
怎么给wchar_t** files赋值呢?
...全文
228 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
g15896894 2009-09-15
  • 打赏
  • 举报
回复
我不知道楼主的意思是不是下面这样:
比如我调用你的函数:
wchar_t *a[2];
a[0] = new wchar_t[10];
a[1] = new wchar_t[10];
call_array( a, 2 );
失落的凡凡 2009-09-15
  • 打赏
  • 举报
回复
c_str()返回的是个临时对象,保存它是没有意义的。


2楼的方法就是把字符串中的内容复制到files保存的地址所指向的地址中,但这块地址在调用前就要申请好。
whg01 2009-09-14
  • 打赏
  • 举报
回复
*files = &((wchar_t*)message1_.c_str());
改成:
wcscpy(*files, ((wchar_t*)message1_.c_str());
whg01 2009-09-14
  • 打赏
  • 举报
回复
*files = &{ (wchar_t*)message1_.c_str(), (wchar_t*)message2_.c_str() };
加“{}”是什么意思?

64,648

社区成员

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

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