STL standard template library标准模板库
一,什么string
String
就是C++、java等编程语言中的字符串,用双引号引起来的几个字符.如"Abc",“一天”.与字符不同的是它指的是一串字符或者一类标识符。
二,头文件
#include < string> // 注意是< string>,不是<string.h>,带.h的是C语言中的头文件
using namespace std; //必须加,否则会报错
三,定义及构造函数
- 无参数的构造函数
直接用cout
输出,输出是空
string str;
cout << str << endl; //输出为空
- 定义一个字符串为几个单个字母
string str1(5, 'a');
cout << str1 << endl;
输出为 :aaaaa
- 字母串初始化
string str2("abcdefg");
cout << str2 << endl;
输出为 :abcdefg
- 定义某个字符串的前几个
string str3("abcdefg", 3);
cout << str3 << endl;
输出为 :abc
- 定义某个字符串的中间几个
string str4("abcdefg", 2, 5);
cout << str4 << endl;
输出为 : cdefg
- 拷贝构造
string str5(str2);
cout << str5 << endl;
输出为 :abcdefg
empty()
:判断字符串是否为空
string str;
cout << str.empty() << endl;
string str2("abcdefg");
cout << str2.empty() << endl;
若为空,则返回 true
,及 1,若非空,则返回 false
,及0
四,属性
- 容量
(1) capacity()
:
string str1(10, 'a');
cout << str1.capacity() << endl;
不同编译器默认的容量大小不同,用该函数可以计算容量,即申请的空间
(2)reserve()
:
str1.reserve(); //修改容量
cout << str1.capacity() << endl;
cout << str1.length() <<endl;
cout << str1.size() <<endl;
只能将容量变大,不能变小
- 字符串长度 :
length()
string str1(10, 'a');
cout << str1.length() <<endl;
- 字符个数 :
size()
string str1(10, 'a');
cout << str1.size() <<endl;
和字符串长度数值一样,但是含义不同
- 重新设置字符个数 :
resize()
str1.resize(5); //重新设置字符个数
cout << str1.capacity() << endl;
cout << str1.length() <<endl;
cout << str1.size() <<endl;
cout << str1 << endl; //输出5个 a
容量不变,字符串长度会变
五,输出
- 输出全部
(1)str是一个类,一个对象,并不是一个字符串,可以直接用cout输出
cout << str << endl;
(2)用c_str
输出全部
cout << str.c_str() << endl;
- 输出单个字符
(1)下标运算
cout <<str[1] << endl; //通过下标运算输出指定元素,注意不可以越界,越界会崩溃
(2) 用 at( )
输出单个元素
cout << str.at(2) << endl; //越界会异常