有时候也会遇到std:vector与转std:string 相互转换的情况。

首先看一下 vector<char> 如何转string:

std::vector<char> *data = response->getResponseData();
std::string res;
//方法一
for (int i = 0;i<data->size();++i) {
  res+=(*data)[i];
res+='\0';
std:cout << res;
 //方法二
std::vector<char> *data = response->getResponseData();
std::string res;
res.insert(res.begin(), data->begin(), data->end());
std::cout << res;
 //方法三
std::vector<char> *data = response->getResponseData();
std::string res;
const char* s = &(*data->begin());
res = std::string(s, data->size());
std::cout << res;
//方法四
string ch = "what a fucking day!";
vector <char> ta;
ta.resize(ch.size());
ta.assign(ch.begin(),ch.end());

string 转vector就会更容易:

vector <char> ta = {‘a’, 'b', 'c'};
ch.clear();
ch.assign(ta.begin(),ta.end());

================================================================
vector to stringstream

#include <iostream>
#include <sstream>
#include <vector>
#include <string>
#include <iterator>
 // Dummy std::vector of strings
 std::vector<std::string> sentence;
 sentence.push_back("aa");
 sentence.push_back("ab");
 // Required std::stringstream object
 std::stringstream ss;
 // Populate
 std::copy(sentence.begin(), sentence.end(),std::ostream_iterator<std::string>(ss,"\n"));
 // Display
 std::cout<<ss.str()<<std::endl;
在以前老一辈技术人员都喜欢使用new char[]来进行动态分配字符串数组,这种情况很容易忘记使用delete进行配对导致内存泄漏。为解决此问题,我们可以使用std::vector&lt;char&gt;容器(内存连续)来代替动态分配数组的功能,以下代码展示了vector的使用: template&lt;typename _Tp,_Tp value&gt; _Tp to_value(_Tp c)... char str1[] = { "abcd" }; char str2[4] = { 'a','b','c',0 }; char str3[4] = { 'a','b','c','d' };//单纯的字符数组,这种字符数组,因为末尾没 QString i = "iTest";           // current file's number   QString total = "totalTest";       // number of files to process   QString fileName = "fileNameTest";    // current file's name    写C++程序时经常会遇到stringvector<char>和(const)char *之间的转换,本文介绍了其间的转换方法和注意事项。 1. stringvector<char> string所存储字符串不包含'\0',所以转为vector后,通过vector.data()直接输出会有问题,会往后找直到'\0',会出现乱码。所以应该在vector后手动再加上'\0',这样在vector.data()输出字符串就没问题了。但此时vector.size()会比string.le std::vector&lt;char&gt; *data = response-&gt;getResponseData(); std::string res; //way1 for (int i = 0;i&lt;data-&gt;size();++i) { res+=(*data)[i]; res+='\0'; std:cout &lt;&lt; res; 报错信息: 错误 LNK2005 class std::vectorclass std::basic_stringchar,struct std::char_traitschar>,class std::allocatorchar> >,class std::allocatorclass std::basic_stringchar, 前言:虽然目前没有编译器能够完全实现C++11,但这并不意味着我们不需要了解,学习它。深入学习C++11,你会发现这根本就是一门新的语言,它解决了c++98许多遗留下来的问题。早晚会有一天,C++11便会普及大部分编译器。因此,提早做些准备也是应该的。在此我想做一个关于C++11的专题,将C++11的新特性进行一一讲解,以通俗易懂的语言及例子帮助读者入门C++11。本文便是C++11新特性超详细版 vectorfront函数返回vector第一个元素的引用,而begin函数返回一个随机访问的迭代器,指向vector的第一个元素。back() 返回最后一个元素的引用,而end()返回一个指向vector末尾(最后一个元素之后)的迭代器。 遍历的时候常常这么写: vector v; for(vector::iterator it; it = v.begin(); it != v.e char vstr[] = "abcdef!"; int N = sizeof(vstr) / sizeof(char); vector<char> v(vstr,vstr+N); //定义一个间数组,用于下面给string对象赋值 char str[sizeof(v)] = " "; //把vector的内容赋值到字符数组 for(int = 0;... 大致思路: 倒序遍历string,将每个字符装入vector&lt; char &gt; #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;string.h&gt; using namespace std; /* run this program using the console pauser or add your ...