欧博电脑版下载:C++中string转换为char*类型返回后乱码问题

admin 3周前 (09-12) 科技 51 1

问题泉源:

  在写二叉树序列化与反序列化时发现序列化函数为char* Serialize1(TreeNode *root)  其函数返回类型为char*,然则我在实现的历程中为了更利便的操作添加字符串使用的是C++中string类型的变量,这就导致我最后获得的效果res是string类型,若是要返回需要转化为char *类型。而等我将string类型转为char*后返回在主函数中就成了乱码。

 

先直接说最后的解决办法:

  第一种:界说一个char数组,数组长度为stringlength+1,将string的内容依次赋值给char数组,最后加上'\0' ,然后返回char数组名就行了。

  第二种:将string界说为类的成员变量

  就贴第一种方式的代码

char *result = new char[res.length() + 1];  //界说需要返回的result工具
for (int i = 0; i < res.length(); ++i)
{
     result[i] = res[i];    //将string类型的res内容都放到result内
}
result[res.length()] = '\0';  //加上竣事符\0

 

再说说我实验的方式

实验1:

  一最先我是直接界说char *result=&res[0];想要通过这个语句直接返回这个string类型变量的首地址,然则失败了,在主函数中的效果变量是乱码 "葺葺葺葺葺葺葺葺葺葺"

实验2:

  于是我最先思索可能的缘故原由  

  1.考虑到局部变量可能随着函数释放,因此导致我返回的指针指向的内容随着函数一起释放导致了乱码,但一想到平时写的函数都是正常返回的,以是这个我很快否决了,但最后发现这个思绪是对的。至于平时写的函数都是正常返回则是由于没有涉及到类型转换。  

  2.通过VS的调试发现我使用的char *result=&res[0]语句返回的是res的首个元素地址,并不是res的首地址,由于string作为std封装的数据结构除了char*这种从C吸收过来的结构另有内存分配allocate这些器械以是导致其内存地址并不像char数组那样是首个元素地址

  以是我想爽性把整个string类型的res都赋值给char *类型的result

  以是我实验了char *result=(char*)res.data();语句,将res(res是string类型的效果)赋给result,转换是乐成的,但返回值依旧失效(且这种转换需要自己加上\0竣事符)

  然后实验char *result=(char*)res.c_str(); 效果也是乐成的,但返回值依旧失效。

  最后实验,用new新建一个char数组,将res的内容所有拷贝到char数组内,然后将数组名返回,终于乐成。

 

问题泉源

  通过VS调试我最终发现了问题泉源所在:res所占内存随着函数竣事而被释放

  这是函数未执行完的调试界面

  这是执行完调试界面

 

AF持多维索引:

欧博电脑版下载:C++中string转换为char*类型返回后乱码问题 第1张

也支持切片:

欧博电脑版下载:C++中string转换为char*类型返回后乱码问题 第2张

也可以通过bool数组获取元素:

欧博电脑版下载:C++中string转换为char*类型返回后乱码问题 第3张

Tensor运算

Tensor当中有大量的运算api,我们只枚举其中最常用的几种,剩下的使用频率不高,人人可以用到的时刻再去查阅响应的文档。

加减乘除

Tensor当中支持好几种运算的方式,我们以加法为例来领会一下。首先支持通过符号直接运算:

欧博电脑版下载:C++中string转换为char*类型返回后乱码问题 第4张

第二种方式是我们可以挪用torch当中的函数,好比加法的函数就是add。

欧博电脑版下载:C++中string转换为char*类型返回后乱码问题 第5张

若是使用torch当中的函数举行盘算的话,它还支持out参数,允许我们传入一个tensor,它

Allbet声明:该文看法仅代表作者自己,与本平台无关。转载请注明:欧博电脑版下载:C++中string转换为char*类型返回后乱码问题

网友评论

  • (*)

最新评论

  • 欧博注册欢迎进入欧博注册(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。文很美丽

    1

最近发表

文章归档

站点信息

  • 文章总数:439
  • 页面总数:0
  • 分类总数:8
  • 标签总数:870
  • 评论总数:126
  • 浏览总数:3177