如何解决尝试在函数中将char *转换为wchar_t *返回时丢失字符串
对于msdn example here,我正在尝试将char *(特别是从main()argv)转换为wchar_t *
代码本身可以正常工作,但是当我尝试将其包装在函数中以供重用时,我发现wchar_t * dst在包装功能退出时出现乱码。我收到未初始化的内存的错误,因为该指针传入了我未在函数外部进行初始化的指针,并且在退出后发生了访问冲突。
但这就是事实。我想传递一个指向未设置的wchar_t的指针,在函数中进行设置,然后在事后使用设置的值。我在这里做什么错了?
这是我的示例代码:
int main(int argc,char* argv[])
{
wchar_t* dst;
for (int i = 0; i < argc; i++)
{
char_str_to_wchar_t_str(dst,argv[i]);
// do some stuff with dst,like print it.
// but by the time i get here,dst is corrupted. why?
// and what do i do to fix it?
}
}
static size_t char_str_to_wchar_t_str(wchar_t* dst,char* src)
{
size_t newsize = strlen(src) + 1;
dst = new wchar_t[newsize]; // Convert char* string to a wchar_t* string.
size_t convertedChars = 0;
mbstowcs_s(&convertedChars,dst,newsize,src,_TRUNCATE);
// at this point,dst is correctly converted and i can read it fine in the debugger.
return convertedChars;
}
编辑:看不到与此相关的问题有什么帮助。顺便说一句,我这样做是因为我正在将一些C代码上转换为C ++。它看起来像将其转换为std :: wstring并返回,完成了相同的基本操作,并且清除了IMO,但是原始问题仍然存在:如果我将指针作为参数传递给函数,那么我应该能够在函数退出后使用该指针,这是怎么回事?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。