前言:

一、为什么有string类

二、标准库中的string类

1、什么是string类

string类的成员函数:

class string
{
private:
	char* a;
	int _capacity;
	int _size;
};

2、string的常用接口函数

在使用string类时,必须包含#include头文件以及using namespace std;

2.1 string类对象的构造

C++初阶学习第六弹——string(1)——标准库中的string类-LMLPHP
代码实例:
#include<string>
#include<iostream>
using namespace std;
int main()
{
	string();               //1、构建了一个空的string对象,这个对象只在本行起作用,除非加const修饰

	string s1("abc");       //2、直接构造
	cout << "s1:" << s1 << endl;

	char arr[] = "abc";
	string s2(arr);         //3、用一个字符串的首地址来构造
	cout << "s2:" << s2 << endl;

	string s3 = s1;         //4、拷贝构造(用一个已经存在的类对象给另一个对象初始化)
	cout << "s3:" << s3 << endl;

	string s4(3, 'x');      //5、构造时将前N个赋值为同一个字符
	cout << "s4:" << s4 << endl;

	return 0;
}

运行结果:

C++初阶学习第六弹——string(1)——标准库中的string类-LMLPHP

2.2 string的容量操作

C++初阶学习第六弹——string(1)——标准库中的string类-LMLPHP
代码实例:
#include<string>
#include<iostream>
using namespace std;
int main()
{
	string s1("abcdef");
	cout <<"s1:"<< s1 << endl;

	cout << "size:" << s1.size() << endl;        //有效字符的个数
	cout << "length:" << s1.length() << endl;    //有效字符的个数
	//上面这两个功能上差别不大,一般我们用size()用的多一点

	cout << "capacity:" << s1.capacity() << endl;   
     //开辟的空间大小(当空间不够时会自动扩容,扩容空间为原空间的1.5倍(与环境有关))

	cout << "empty:" << s1.empty() << endl;     //检查字符串是否为空,0表示非空,1表示空

	s1.clear();                                 //清空字符串
	cout <<"s1:"<< s1 << endl;

	s1.reserve(100);                            //开辟指定大小空间(一般会多一点)
	cout << "capacity:" << s1.capacity() << endl;

	s1.resize(5, 'a');
	cout << "size:" << s1.size() << endl;
	cout << "s1:" << s1 << endl;

	return 0;
}

运行结果:

C++初阶学习第六弹——string(1)——标准库中的string类-LMLPHP

05-10 15:46