有时候也会遇到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>
std::vector<std::string> sentence;
sentence.push_back("aa");
sentence.push_back("ab");
std::stringstream ss;
std::copy(sentence.begin(), sentence.end(),std::ostream_iterator<std::string>(ss,"\n"));
std::cout<<ss.str()<<std::endl;
std::vector<char> *data = response->getResponseData();
std::string res;
//way1
for (int i = 0;i<data->size();++i) {
res+=(*data)[i];
res+='\0';
std:cout << res;
char vstr[] = "abcdef!";
int N = sizeof(vstr) / sizeof(char);
vector<char> v(vstr,vstr+N);
//定义一个中间数组,用于下面给string对象赋值
char str[sizeof(v)] = " ";
//把vector的内容赋值到字符数组中
for(int = 0;...
data_vector是vector<char>类型, 上面循环中的data实际是data_vector的每一项的拷贝。
因此,循环中对data的修改不会反映到data_vector。
希望在循环中对i做一些操作, 那么可以声明data为
写C++程序时经常会遇到string、vector<char>和(const)char *之间的转换,本文介绍了其间的转换方法和注意事项。
1. string转vector<char>
string所存储字符串不包含'\0',所以转为vector后,通过vector.data()直接输出会有问题,会往后找直到'\0',会出现乱码。所以应该在vector后手动再加上'\0',这样在vector.data()输出字符串就没问题了。但此时vector.size()会比string.le