最近在做网络通信,看到很多人使用vector<char>来存储二进制网络数据,而我有时需要用char*数据,所以记录下二者的相互转换方法,代码如下:
#include <cstring>
#include <vector>
using namespace std;
int main(int argc, char *argv[])
vector<char>vecData_;
char *strCharA_ = "1234";
//char*-->vector<char>转换
vecData_.insert(vecData_.end(), strCharA_, strCharA_ + strlen(strCharA_));
//vector<char>-->char*转换
char *strCharB_ = &vecData_[0];
return 0;
最近在做网络通信,看到很多人使用vector<char>来存储二进制网络数据,而我有时需要用char*数据,所以记录下二者的相互转换方法,代码如下:#include <cstring>#include <vector>using namespace std;int main(int argc, char *argv[]){ vector...
通常使用vector<char>来存储二进制数据(比如网络数据包).因此它会与char* 进行相互转换,具体方法如下例所示:
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <cstring>
us...
在以前老一辈技术人员都喜欢使用new char[]来进行动态分配字符串数组,这种情况很容易忘记使用delete进行配对导致内存泄漏。为解决此问题,我们可以使用std::vector<char>容器(内存连续)来代替动态分配数组的功能,以下代码展示了vector的使用:
template<typename _Tp,_Tp value>
_Tp to_value(_Tp c)...
一.string类和
vector<
char>的区别
string类是一个保存字符的动态数组,由于其中有一个接口c_str,转化成c语言的字符串,要以\0结尾,所以string类最后会有一个\0.
vector<T>是一个保存T
类型的动态数组,
vector<
char>也是保存字符的动态数组,但是,不会以\0结尾,不保存\0.
二.
vector和list比较
1.String16转const char*
String16 name16 = String16("Hello World");
String8 name8 = String8(name16);
const char *buffer = name8.string();
printf("buffer = %s\n",buffer);
String16.string()其实是c...
写C++程序时经常会遇到string、vector<char>和(const)char *之间的转换,本文介绍了其间的转换方法和注意事项。
1. string转vector<char>
string所存储字符串不包含'\0',所以转为vector后,通过vector.data()直接输出会有问题,会往后找直到'\0',会出现乱码。所以应该在vector后手动再加上'\0',这样在vector.data()输出字符串就没问题了。但此时vector.size()会比string.le
float arrHeight[] = { 1.68,1.72,1.83,2.05,2.35,1.78,2.1,1.96 };
vector<float> vecHeight(arrHeight, arrHeight+sizeof(arrHeight)/sizeof(float));
2、
vector转数组
由于
vector内部的数据是存放在连续的...
因为数组是事先开辟好的,pushback进去的是数组的地址,所以无论你怎么改输入的内容,都是把一个相同的东西存进去。
解决方法 重新定义一个char *temp_buf = new char[10] 然后strcpy,再push_back进去。
C++代码:
#define _CRT_SECURE_NO_WARNINGS
// vector<char>, string转换
// vector<char>与string本质上都是STL内部的程序,是可以用insert来转换的
#include <bits/stdc++.h> // c++标准库
using namespace std ;
int m...