vector<string>和vector <char*>都可以用来存储字符串,但它们有一些不同之处。 vector<string>的优势: 更易于使用:string类型提供了丰富的字符串操作方法,使得字符串操作更加方便。 内存管理:string类型会自动处理内存分配和释放,避免了内存泄漏的问题。 兼容性:string类型与C++标准库中的其他函数和类型更加兼容。 vec...
(1)char *是一个指针,而string是一个类。string封装了char *,管理这个字符串,是一个char *型的容器。 (2)string封装了很多实用的成员方法。查找find,拷贝copy,删除delete,替换replace和插入insert等 (3)string不用考虑内存释放和越界问题。string管理char *所分配的内存。每一次string的复制,取值都由string类负责...
string是C++风格的字符串,而string本质上是一个类 string和char * 区别: char * 是一个指针 string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器 string特点: string 类内部封装了很多成员方法,例如:查找find,拷贝copy,删除delete 替换replace,插入insert string管理char*所分配的内存,不用担心...
vector<char*> ch; vector<string> str; for(int i=0;i<5;i++) { char *c=fun1();//通过这个语句产生不同的字符串c ch.push_back(c); //输出发现,五个都是一样的数值,都是最后一个c的值 str.push_back(c); //正确的存储了 }
char* array: times - 10000 memory - 2292k VM - 1368k string vector: times - 10000 memory - 1752k VM - 828k char* vector: times - 10000 memory - 2340k VM - 1420k 可以看出,使用string以及vector或者静态分配数组,内存消耗是比较少的,多次new小内存导致内存消耗明显增多。
写C++程序时经常会遇到string、vector<char>和(const)char *之间的转换,本文介绍了其间的转换方法和注意事项。 1. string转vector<char> string所存储字符串不包含'\0',所以转为vector后,通过vector.data()直接输出会有问题,会往后找直到'\0',会出现乱码。所以应该在vector后手动再加上'\0',这样在vector.data...
1.string string 是basic_string<char> 的实现,在内存中是连续存放的.为了提高效率,都会有保留内存,如string s= "abcd",这时s使用的空间可能就是255,当string再次往s里面添加内容时不会再次分配内存.直到内容>255时才会再次申请内存,因此提高了它的性能.当内容>255时,string会先分配一个新内存,然后...
* 考虑使用vector<char>来代替string,vector实现不允许使用引用计数,所以隐藏的多线程性能问题不会出现了。 2.2 使用reserve来避免不必要的重新分配 === 1. resize和reserve的区别 * resize会强制把容器容量改为n,当参数比当前size()少时,容器尾部的元素会被销毁. *当reserve的参数比当前size()少时,vector会忽略...
string string有点像字符串,如果在c中我问你字符串的本质是什么?应该回答是指针,但是如果说string的本质是什么,那么就是类。 string和char指针的基本操作: 代码语言:javascript 复制 #include<string>#include<iostream>using namespace std;voidtest01(){string s1;constchar*str="aaa0";strings2(str);cout<<s1...