探索c++:string常用接口 迷雾

这篇具有很好参考价值的文章主要介绍了探索c++:string常用接口 迷雾。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

 个人主页:日刷百题

系列专栏〖C/C++小游戏〗〖Linux〗〖数据结构〗 〖C语言〗

🌎欢迎各位点赞👍+收藏⭐️+留言📝 

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

一、string类

这里我们对string类进行一个简单的总结:

  • string是表示字符串的字符串类
  • 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。
  • string在底层实际是:
//string是basic_string模板类的别名
typedef  basic_string<char, char_traits, allocator>   string;
  • 不能操作多字节或者变长字符的序列。

这里有一个需要注意的点:
在使用string类时,必须包含#include头文件以及using namespace std;

二、string类的常用接口

2.1  string对象常见构造(constructor)

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

(constructor)函数名称   功能说明
string()(重点)   构造空的string类对象,即空字符串
string(const char* s)(重点) 用C-string来构造string类对象
string(size_t n, char c)  string类对象中包含n个字符
string(const string&s)(重点)  拷贝构造函数
2.1.1  string()
  • 构造空的string对象,即空字符串
//空构造函数
#include<iostream>
using namespace std;
int main()
{
	string s1;
	cout << s1 << endl;
	return 0;
}
string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言
 2.1.2  string(const char* s)
  • 用C-string来构造string类对象
//常量字符串                                           
#include<iostream>
using namespace std;
int main()
{
	string s1("hello world");
	cout << s1 << endl;
	return 0;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

 其实相当于将常量字符串拷贝到str中

 2.1.3  string(size_t n, char c)
  • 用n个相同的字符c去构造string类对象
//创建一个包含 5 个重复字符 'a' 的字符串
#include<iostream>
using namespace std;
int main()
{
	string s1(5,'a');
	cout << s1 << endl;
	return 0;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

 2.1.4  string(const string&s) 
  • 拷贝构造(深拷贝),只有调用默认拷贝构造才是浅拷贝
#include<iostream>
using namespace std;
int main()
{
	string s1("hello world");
	cout << s1 << endl;
	string s2(s1);
	cout << s1 << endl;
    cout << s2 << endl;
    cout << &s1 << endl;
    cout << &s2 << endl;
	return 0;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

2.1.5 string (const string& str, size_t pos, size_t len = npos)

  • 拷贝一个string类对象,读取从他的第pos个位置开始的往后的len个字符
#include<iostream>
using namespace std;
int main()
{
	string s1("hello world");
	cout << s1 << endl;
	string s2(s1, 6, 3);
	cout << s2 << endl;
	return 0;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

注:

如果拷贝的字符数量大于字符串的字符个数的话,就全部打印完;如果不给值,则是缺省值npos,值为-1,也是全部打完。

 2.2  string类对象的容量操作(Capacity)

函数名称     功能说明
size(重点) 返回字符串有效字符长度
length   返回字符串有效字符长度
capacity  返回空间总大小
empty (重点) 检测字符串释放为空串,是返回true,否则返回false
clear (重点)  清空有效字符
reserve (重点)  为字符串预留空间**
resize (重点) 将有效字符的个数该成n个,多出的空间用字符c填充
2.2.1  size和length

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

  • size和length其实是一样的, 都代表字符串的长度,但是早期STL还没出现的时候,strling类用的是length,但是后来STL出来后,里面大部分都是用的size,所以为了保持一致性又造了一个size出来,平时用哪个都可以的。

用法如下:

#include<iostream>
using namespace std;
int main()
{
	string s1("hello world");
	cout << s1.length() << endl;
	cout << s1.size() << endl;
	return 0;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

注意:这里计算出来的是有效字符个数,也就是说不包括’\0’

2.2.2  capacity

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

  • 表示string当前的容量,一般来说是默认不算上’\0'

用法如下:

#include<iostream>
using namespace std;
int main()
{
	string s1("hello world");
	cout << s1.capacity() << endl;
	return 0;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

注:vs用的是PJ版STL,字符串会先被存在_Bx数组中,是char[16]类型,超过之后才会去动态开辟空间,第一次开辟空间是32,然后从32开始进行1.5倍扩容。而g++是SGI版STL,直接就是从0开始,然后根据情况直接开始扩容,从0开始进行2倍扩容。

2.2.3  empty

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

  • 字符串为空返回1,不为空返回0

用法如下:

#include<iostream>
using namespace std;
int main()
{
	string s1("hello world");
	cout << s1.empty() << endl;
	return 0;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

2.2.4  clear

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

  • 清空字符串
#include<iostream>
using namespace std;
int main()
{
	string s1("hello world");
	cout << s1 << endl;
	s1.clear();
	cout << s1 << endl;
	return 0;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

2.2.5  reverse

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

  • 作用是开空间,扩容
  1. 如果 n 大于当前字符串容量(capacity),则该函数会导致容器将其容量增加到 n 个字符(或更大)。 
  2. 在所有其他情况下,它被视为一个非约束性的缩减字符串容量请求:容器实现可以自由优化,保持字符串的容量大于n。
  3. 此函数对字符串长度没有影响,也无法更改其内容。(当n小于对象当前的capacity时,什么也不做)
#include<iostream>
using namespace std;
int main()
{
	string s1("hello world");
	cout << s1.capacity() << endl;
	cout << s1.size() << endl;
    //1.5倍扩容
	s1.reserve(30);
	cout << s1.capacity() << endl;
	cout << s1.size() << endl;
	return 0;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

  • 扩容不会改变size()。 
  • vs根据1.5倍的扩容规则,至少会扩容到超过你的要求。如果是g++的话,就是2被扩容。
2.2.6  resize 

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

  • 改变size,减少的话就是变少(不会改变容量),如果增多的话就可能会扩容顺便帮助我们初始化,第一个版本的话初始化补\0,第二个版本的话就是初始化c字符
#include<iostream>
using namespace std;
int main()
{
	string s1("hello world");
	cout << s1.capacity() << endl;
	cout << s1.size() << endl;
	s1.resize(30);
	cout << s1.capacity() << endl;
	cout << s1.size() << endl;
	return 0;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

总结:

  • **size()**与length()方法底层实现原理完全相同,引入size()的原因是为了与其他容器的接口保持一致,一般情况下基本都是用size(),它的长度不包括\0。
  • clear()只是将string中有效字符清空,不改变底层空间大小。
  • resize(size_t n) 与 resize(size_t n, char c)都是将字符串中有效字符个数改变到n个,不同的是当字符个数增多时:resize(n)用0来填充多出的元素空间,resize(size_t n, char c)用字符c来填充多出的元素空间。注意:resize在改变元素个数时,如果是将元素个数增多,可能会改变底层容量的大小,如果是将元素个数减少,底层空间总大小不变。
  • reserve(size_t res_arg=0):为string预留空间,不改变有效元素个数,当reserve的参数小于string的底层空间总大小时,reserver不会改变容量大小。

2.3 string类对象的访问及遍历操作(Iterators)

函数名称 功能说明
operator[] (重点)
返回 pos 位置的字符, const string 类对象调用
begin + end
begin 获取一个字符的迭代器 + end 获取最后一个字符下一个位置的迭 代器
rbegin + rend
begin 获取一个字符的迭代器 + end 获取最后一个字符下一个位置的迭 代器
范围 for
C++11 支持更简洁的范围 for 的新遍历方式
2.3.1   operater[ ]  和 at()
  • 返回该位置的字符

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

#include<iostream>
using namespace std;
int main()
{
	string const s1("hello world");
	for (int i = 0; i < s1.length(); i++)
	{
		cout << s1[i];
	}
	cout << endl;
	return 0;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

注:用[ ]越界是断言错误。

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

#include<iostream>
using namespace std;
int main()
{
	string const s1("hello world");
	for (int i = 0; i < s1.length(); i++)
	{
		cout << s1.at(i);
	}
	cout << endl;
	return 0;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

注:at()越界时候报的是非法。

2.3.2 迭代器(iterator)遍历

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

迭代器有两种,还有一个叫做反向迭代器,就是从尾部开始遍历,我们这里介绍正向迭代器
iterator是一个类型定义在string里面,所以它要指定类域,才能取到。
begin是开始的指针,end是指向‘\0’的指针,注意是左闭右开!! 

#include<iostream>
using namespace std;
int main()
{
	string s1("hello world");
	for (string::iterator i = s1.begin(); i != s1.end(); i++)
	{
		cout << *i;
	}
  cout<<endl;
	return 0;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

反向迭代器就是从后开始往前移动:
这里要引出的是 reverse_iterator 其实这里的rbegin是字符串的最后一个位置(不是\0),并且这里的指针也是++,向前移动。

#include<iostream>
using namespace std;
int main()
{
	string s1("hello world");
	for (string::reverse_iterator i = s1.rbegin(); i != s1.rend(); i++)
	{
		cout << *i;
	}
    cout<<endl;
	return 0;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

注:迭代器像指针,但不是指针。

2.3.3  范围for
  • 自动取容器中的数据,赋值给e,自动迭代,自动往后走,自动结束。
#include<iostream>
using namespace std;
int main()
{
	string s1("hello world");
	for (auto e:s1)
	{
		cout << e;
	}
    cout<<endl;
	return 0;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

注:for循环的底层实现就是迭代器!

2.4 string类对象的修改操作(Modifiers)

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

2.4.1  push_back
  • 在字符串尾插字符C
#include<iostream>
using namespace std;
int main()
{
	string s1("hello world");
	s1.push_back('!');
	cout << s1 << endl;
	return 0;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

2.4.2  append
  • append尾插,可以插入字符串
#include<iostream>
using namespace std;
int main()
{
	string s1("hello world");
	s1.append(" hhhh!");
	cout << s1 << endl;
	return 0;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

2.2.3 operator+=
  • operator+=可以实现在字符串后面追加字符或者字符串,并且函数的可读性更高,所以我们一般选择使用+=来实现对对象的追加
#include<iostream>
using namespace std;
int main()
{
	string s1("hello world");
	s1+=(" hhhh!");
	cout << s1 << endl;
	s1 += ('x');
	cout << s1 << endl;
	return 0;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

2.2.4  assign(了解即可)
  • assign赋值,字符覆盖
void test_string9() {
	// 创建一个初始内容为"xxxxxxx"的字符串str
	string str("xxxxxxx");
 
	// 创建一个基础字符串base,
	string base = "The quick brown fox jumps over a lazy dog.";
 
	// 使用assign方法将base的全部内容赋给str,替换str原来的内容
	str.assign(base);
	// 输出赋值后str的内容
	cout << str << '\n';
 
	// 第二种用法:使用assign方法从base的第5个字符开始截取10个字符,并将这10个字符赋给str
	str.assign(base, 5, 10);
	// 输出截取并赋值后str的内容
	cout << str << '\n';
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

2.2.5   insert
  • insert都是在当前位置的前面插入
#include<iostream>
using namespace std;
int main()
{
	string s1("hello world");
	cout << s1 << endl;

	s1.insert(0, "abc");
	cout << s1 << endl;
	return 0;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

2.2.6  erase

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

  • erase删除:表示第pos个位置开始后len个字符删除,len的默认值是npos
#include<iostream>
using namespace std;
int main()
{
	string s1("hello world");
	cout << s1 << endl;

	s1.erase(5, 2);
	cout << s1 << endl;

	return 0;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

2.2.7  replace

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

  • replace替换:将pos位置开始的len个字符替换成字符串
#include<iostream>
using namespace std;
int main()
{
	string s1("hello world");
	cout << s1 << endl;
	s1.replace(6, 1, "xx");
	cout << s1<< endl;
	return 0;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

2.2.8  swap
  • 交换2个string类对象的指针指向
void test_string9()
{
    string s2("hello world hello abcd");
	string s3;
	s3.reserve(s2.size());
	for (auto ch : s2)
	{
		if (ch != ' ')
		{
			s3 += ch;
		}
		else
		{
			s3 += "20%";
		}
	}
	cout << s3 << endl;
	s2.swap(s3);
	cout << s2 << endl;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

总结:

  • 在string尾部追加字符时,s.push_back / s.append() / += 三种的实现方式差不多,一般情况下string类的+=操作用的比较多,+=操作不仅可以连接单个字符,还可以连接字符串。
  • 对string操作时,如果能够大概预估到放多少字符,可以先通过reserve把空间预留好。

2.5 string类对象的操作(operations)

c_str(重点)
返回c格式的字符串
find 
从字符串pos位置开始往后找字符c,返回该字符在字符串中的位置
rfind
从字符串pos位置开始往前找字符c,返回该字符在字符串中的位置
substr
str中从pos位置开始,截取n个字符,然后将其返回
2.5.1  c_strstring c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言
  • 以C语言的方式打印字符串
#include<iostream>
using namespace std;
int main()
{
	string s1("hello world");
	cout << s1.c_str() << endl;
	return 0;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

注:不能通果c_str 返回的指针去修改字符串,因为它指向的是常量区域。

2.5.2  find
  • find从字符串pos位置开始往后找字符c,返回该字符在字符串中的位置,如果没有找到会返回npos
#include<iostream>
using namespace std;
int main()
{
	string s1("file.cpp");
	size_t pos1 = s1.find('.');
	if (pos1 != string::npos)
	{
		string suffix = s1.substr(pos1);
		cout << suffix << endl;
	}
	else
	{
		cout << "没找到后缀" << endl;
	}
	return 0;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言 

2.5.3  refind
  • rfind从字符串pos位置开始向前找字符c,返回该字符在字符串中的位置,如果没有找到会返回npos
#include<iostream>
using namespace std;
int main()
{
	    string s1("file.cpp.tar.zip");
		size_t pos1 = s1.rfind('.');
		if (pos1 != string::npos)
		{
			string suffix = s1.substr(pos1);
			cout << suffix << endl;
		}
		else
		{
			cout << "没有后缀" << endl;
		}
	

	return 0;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言 

2.5.4  substr
  • str中从pos位置开始,截取n个字符,然后将其返回
#include<iostream>
using namespace std;
int main()
{
	string s1("hello world");
	cout << s1.substr(3, 4) << endl;
	cout << s1.substr(3, 12) << endl;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

如何利用上面接口,区分开网站的协议,域名,网址呢?

void test_string10()
{
    string url1("https://legacy.cplusplus.com/reference/string/string/substr/");
	string protocol, domain, uri;//协议,域名,网址
	size_t i1 = url1.find(':');
	if (i1 != string::npos)
	{
		protocol = url1.substr(0, i1 - 0);
		cout << protocol << endl;
	}

	size_t i2 = url1.find('/',i1+3);
	if (i2 != string::npos)
	{
		domain = url1.substr(i1+3, i2-(i1+3));
		cout << domain << endl;

		uri = url1.substr(i2+1);
		cout << uri << endl;
	}
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

2.6  string类非成员函数

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

其实这里用的不多,不做过多的讲解
但是这个getline函数是可以用到一些题目中来读取字符串的,他遇到换行符就会停止读取,遇到空格不会.

 2.6.1  getline

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言

获得一个字符串(hello word!)里面最后一个单词的长度

#include<iostream>
#include<string>
using namespace std;
int main()
{
	string line;
	// 不要使用cin>>line,因为会它遇到空格就结束了
	// while(cin>>line)
	while (getline(cin, line))
	{
		size_t pos = line.rfind(' ');
		cout << line.size() - (pos+1) << endl;
	}
	return 0;
}

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言 

string c++ 接口,C++语言:在虚拟世界中绘梦的魔法师,c++,开发语言文章来源地址https://www.toymoban.com/news/detail-860715.html

到了这里,关于探索c++:string常用接口 迷雾的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++从入门到放弃】string全方面分析(常用接口、模拟实现)

    🧑‍💻作者: @情话0.0 📝专栏:《C++从入门到放弃》 👦个人简介:一名双非编程菜鸟,在这里分享自己的编程学习笔记,欢迎大家的指正与点赞,谢谢! 在学习C++的过程中,必定有一个非常重要的工具就是STL(标准模板库):C++标准库的重要组成部分,它不仅是一个可复

    2024年02月02日
    浏览(46)
  • 「探索API的奇妙世界:理解、使用和优化接口技术」

    引言: 在现代科技的时代,API(应用程序编程接口)已经成为各行业中不可或缺的关键技术。从手机应用到云计算,从社交媒体到物联网,几乎所有的软件都在背后使用着API来实现数据交互和功能扩展。在这篇文章中,我们将深入探索API的奇妙世界,从理解API的基本概念开始

    2024年02月16日
    浏览(41)
  • 【机器学习算法】穿越神经网络的迷雾:深入探索机器学习的核心算法

    神经网络算法是一种模仿人类神经系统结构和功能的机器学习算法。它由多个神经元(或称为节点)组成的层次结构构成,通过模拟神经元之间的连接和信号传递来学习数据之间的复杂关系。下面详细描述神经网络算法的一般原理和工作流程: 1. 神经元结构: 神经元是神经

    2024年04月27日
    浏览(34)
  • 【C++杂货铺】探索string的底层实现

    string 本质上是一个动态顺序表,它可以根据需要动态的扩容,所以字符串一定是通过在堆上动态申请空间进行存储的,因此 _str 指向存储字符串的空间, _size 用来表示有效字符数, _capacity 用来表示可以存储有效字符的容量数。 注意 :默认构造函数需要注意的地方是:首先

    2024年02月11日
    浏览(40)
  • [C/C++]string类常用接口介绍及模拟实现string类

            在C语言中,字符串是以\\\'\\0\\\'结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。 C++中对于string的定义为: typedef ba

    2024年03月22日
    浏览(80)
  • 探索C语言的数据类型:解密编程世界的核心秘密

    ✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C语言学习 贝蒂的主页:Betty‘s blog (1) 常量的概念 常量顾名思义就是无法改变的量,比如一周有7天,一天有24小时,这些都是无法改变的量。 (2) 常量的分类 整数常量:1,2,3,-1,-2等 小数

    2024年02月19日
    浏览(161)
  • 探索vue2框架的世界:简述常用的vue2选项式API (二)

    parent.vue (父组件) child.vue (子组件) 子组件作为父组件和孙组件的传递中介,在儿子组件中给孙子组件添加v-bind=“$attrs”,这样孙子组件才能接收到数据 grandChild.vue (孙子组件) parent.vue 父组件 child.vue (子组件) 子组件作为父组件和孙组件的传递中介,在儿子组件中给孙子组件添

    2024年01月16日
    浏览(32)
  • 【小梦C嘎嘎——启航篇】string常用接口的模拟实现

        😎博客昵称:博客小梦 😊最喜欢的座右铭:全神贯注的上吧!!! 😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主! 😘博主小留言:哈喽! 😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不

    2024年02月11日
    浏览(31)
  • 【c++】string类常见接口函数

    🔥个人主页 : Quitecoder 🔥 专栏 : c++笔记仓 朋友们大家好啊, 本节我们来到STL内容的第一部分: string 类接口函数的介绍 给大家分享一个c++文档库: https://legacy.cplusplus.com/ 字符串类是代表字符序列的对象 标准字符串类为这类对象提供了支持,其接口类似于标准字节容器的

    2024年04月16日
    浏览(32)
  • C++ string模拟实现(部分接口)

    C++的string类是一个类模板,用于表示和操作任何字符类型的字符串。 string类内部使用字符数组来存储字符,但是所有的内存管理,分配和空终止都由string类自己处理 ,所以使用起来很方便。string类的长度可以在运行时改变,因为它使用动态内存分配类似于vector。 string类提供

    2024年02月13日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包