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

目录

问题

解决

方法一、直接法

方法二、偷梁换柱法

总结


问题

 

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

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

解决

方法一、直接法

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

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

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

方法二、偷梁换柱法

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

// 如果我们打算使用vec
std::vector<char> vec;
// 可以尝试使用str,size是最终字符串长度,初始化化str,每一位都是字符a
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的初值

猜你喜欢

转载自blog.csdn.net/liuzehn/article/details/107606163