c++中的String
- 软件开发
- 2025-08-12 15:06:01

文章目录 String定义对象的方式成员函数operator=begin/endsizecapacityreserversizeoperator+=/append/push_backoperator[]/at String
String是一个类模版,可以定义一个字符/字符串对象。 字符顺序表
定义对象的方式定义方式有很多重要的就这几种
string s1; string s2("hello word"); string s3 = s2; string s4(s2); 成员函数下面的成员函数中有些是很不常用的,这里会整理出常用的几个
operator=让一个string对象 可以赋值成另一个 string对象/字符串/字符
int main() { string s1 = "hello"; cout << s1; return 0; } begin/endbegin: 配合迭代器等东西使用,指向对象的开始 end:配合的迭代器使用,指向对象的结束
string::iterator it = s1.begin(); while (it != s1.end()) { cout << *it << " "; it++; } cout << endl; size定义的对象的长度
string s1("hello"); cout<<s1.size(); capacity当前定义的对象的容量大小
string s1("hello"); cout << s1.capacity() << endl; reserve设置容量 每个编译器的容量可能大小有差异,取决于这个编译器使用什么版本的STL 如果当前对象的capacity小于reserve 那么就是扩容 在vs下是 1.5倍的扩容 在gcc下是 2倍扩容 如果 capacity>reserve 那么有可能缩容 在vs下 reserve 是不会缩容的 在gcc下 是会缩到 reserve的长度,当reserve<size,那么会缩到有效数组大小的长度(size)
int main() { string s1; //检测扩容机制 //每个编译器 扩容都不同 int a = s1.capacity(); string s2("hello word"); s1.reserve(500); //如果确定自己需要多少空间 //reserve 设置容量 //不同编译器 扩容 会扩500或者以上 //在vs下 reserve下 没数据下/有数据下:只会扩容 //在gcc下 没数据可以缩容 //有数据下如果缩的比有效数据低 那么 他会缩到 有效数据的结尾 //reserve 不会影响数据 只影响容量 //g++ 会根据你扩容直接扩容 //vs会有对齐规则 扩容多一点 rsize和reserve类似,rsize是设置容量,并且会影响数据的 如果是扩容的话 那么他会在有效数据后扩容并且初始化成\0 resize > capacity 那么就是扩容+尾插 如果 size<n<capacity 如果在这个区间 只会插入数据 如果 n<size 删除数据 空间不变 保留前n个数据
//rsize -既影响容量 又影响数据 cout << s2.size() << endl; cout << s2.capacity() << endl; //resize 如果是扩容的话 那么他会在有效数据后扩容并且初始化成\0 //resize > capacity 那么就是扩容+尾插 s2.resize(100); //s2.resize(100,'x');如果是这样子的话 就是有效数据后插入x 到size结束 cout << s2.size() << endl; cout << s2.capacity() << endl; //如果 size<n<capacity 如果在这个区间 只会插入数据 s2.resize(12); cout << s2.size() << endl; cout << s2.capacity() << endl; //如果 n<size ->删除数据 空间不变 保留前n个数据 s2.resize(5); cout << s2.size() << endl; cout << s2.capacity() << endl; cout << s2; operator+=/append/push_back这些都是插入成员函数 operator+= 直接尾部插入··· append 插入一个string对象/一个插入··· push_back 尾插
int main() { string s1("hello word "); // append 插入 一个字符串 ··· s1.append("dabai "); string s2 = " aaaaaaa"; //+= 插入 s1 += 'x'; s1 += 'word'; s1 += s2; operator[]/at下标访问
//at()==[] string s2("hello word"); cout << s2.at(20) << endl; return 0;如果对你有帮助的话点一下赞,谢谢
c++中的String由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“c++中的String”