有时候也会遇到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;
在以前老一辈技术人员都喜欢使用new char[]来进行动态分配字符串数组,这种情况很容易忘记使用delete进行配对导致内存泄漏。为解决此问题,我们可以使用std::vector<char>容器(内存连续)来代替动态分配数组的功能,以下代码展示了vector的使用:
template<typename _Tp,_Tp value>
_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++程序时经常会遇到string、vector<char>和(const)char *之间的转换,本文介绍了其间的转换方法和注意事项。
1. string转vector<char>
string所存储字符串不包含'\0',所以转为vector后,通过vector.data()直接输出会有问题,会往后找直到'\0',会出现乱码。所以应该在vector后手动再加上'\0',这样在vector.data()输出字符串就没问题了。但此时vector.size()会比string.le
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;
报错信息:
错误 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新特性超详细版
vector中front函数返回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< char >
#include <iostream>
#include <vector>
#include <string.h>
using namespace std;
/* run this program using the console pauser or add your ...