C++ vector与string互转
1.vector转string
std::string Str = "hello world!";
std::vector<uint8_t> Vec;
Vec.assign(Str.begin(), Str.end());
2.string转vector
std::string Str;
std::vector<uint8_t> Vec(6, 7);
Str.assign(Vec.begin(), Vec.end());
#include <iostream> #include <vector> #include <string> using std::string; using std::vector; int main() { vector<unsigned char> Vec1; string Str{"123456"}; Vec1.assign(Str.begin(), Str.end()); std::cout << "String data is: " << std::endl; for(auto aa : Str) printf("%02x ", aa); std::cout << std::endl; std::cout << "Vector data is: " << std::endl; for(auto aa : Vec1) printf("%02x ", aa); std::cout << std::endl; }
3.vector相关操作
Vec.erase(Vec.begin(), Vec.end()) /*删除所有*/
Vec.erase(Vec.begin())
Vec.clear() /*删除所有*/
Vec.empty() /*判断是否为空*/
Vec.capacity() /*返回容器当前已分配的容量*/
Vec.front() /*传回第一个数据*/
Vec.insert(Vec.begin(), 7) /*在Vec起始位置插入数据7*/
Vec.push_back(8) /*在尾部加入一个数据8*/
Vec.pop_back() /*删除最后一个数据*/
Vec.size() /*返回容器中实际数据的个数*/
Vec.rbegin() /*传回一个逆向队列的第一个数据*/
Vec.rend() /*传回一个逆向队列的最后一个数据的下一个位置*/
Vec.resize(num) /*重新指定队列的长度为num*/
Vec.reserve() /*保留适当的容量*/
Vec1.swap(Vec2) /*将Vec1和Vec2元素互换 swap(Vec1, Vec2) */
4.string与char *
string str = "hello";
const char* p = str.data();
const char *p = str.c_str();
char cp[50];
str.copy(cp, 5, 0); /*5代表复制几个字符,0代表复制的位置*/
char *chp[str.length() + 1];
strcpy(chp, str.c_str());