如何将vectror<char>转换成string(C++)

举报
liuzhen007 发表于 2021/05/26 16:06:26 2021/05/26
【摘要】 目录 问题 解决 方法一、直接法 方法二、偷梁换柱法 总结 问题   今天遇到一个问题,问题是如何将vectror<char>转换成string类型,编程语言是C++。 后来总结发现有两种方法,接下来结合代码看看二者的优劣。 解决 方法一、直接法 如果最终我们拿到了字符向量数组,那么我们可以使用string一个比较少用的构造函数...

目录

问题

解决

方法一、直接法

方法二、偷梁换柱法

总结


问题

 

今天遇到一个问题,问题是如何将vectror<char>转换成string类型,编程语言是C++。

后来总结发现有两种方法,接下来结合代码看看二者的优劣。

解决

方法一、直接法

如果最终我们拿到了字符向量数组,那么我们可以使用string一个比较少用的构造函数来完成这个转换工作,具体看代码:


  
  1. std::vector<char> vec;
  2. std::string str(vec.begin(), vec.end());

这样str就是转换后得到的字符串。

方法二、偷梁换柱法

既然我们最终想要的是string字符串,那么我们最开始的时候是不是可以不使用字符向量数组vectror<char>,而直接使用字符串string呢?当然可以,我们可以利用另一个string的构造函数,具体看代码:


  
  1. // 如果我们打算使用vec
  2. std::vector<char> vec;
  3. // 可以尝试使用str,size是最终字符串长度,初始化化str,每一位都是字符a
  4. std::string str(size, 'a');

这样初始化后,操作str和vec是差不多的,但是最终的结果就不需要再进行转化了。

总结

上述两种方法其实都是合理利用了string的构造函数,在实际使用过程中,如果能够灵活运行它们会收到事半功倍的效果,自己深有体会。接下来看看string都有那些常见的构造函数方法:

string strs;                              //构造一个空的字符串
string s(str);                            //构造一个字符串str的复制品
string s(str, strIndex);             //将字符串str中始于stridx的部分作为构造函数的初值
string s(str, strbegin, strlen);  //将字符串str中始于strbegin、长度为strlen的部分作为字符串初值
string s(cstr);                          //以C_string类型cstr作为字符串s的初值
string s(cstr,char_len);           //以C_string类型cstr的前char_len个字符串作为字符串s的初值
string s(num, c);                      //生成一个字符串,包含num个c字符
string s(strs, beg, end);           //以区间[beg, end]内的字符作为字符串s的初值

文章来源: liuzhen.blog.csdn.net,作者:Data-Mining,版权归原作者所有,如需转载,请联系作者。

原文链接:liuzhen.blog.csdn.net/article/details/107606163

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。