标准库string类型
string类型支持长度可变的字符串,C++标准库提供了各种相关操作。
#include <string>
using std::string
一、string对象的定义和初始化
string标准库支持几个构造函数。构造函数是一个特殊的成员函数,定义如何初始化该类型的对象。如下所示:
//①默认构造函数,s1为空串
string s1;
//②将s2初始化为s1的一个副本
string s2(s1);
//③将s3初始化为一个字符串字面值副本
string s3("value");
//④将s4初始化为字符'c'的n个副本
string s4(n, 'c');
二、string对象的读写
在C++基础<1>中,我们了解了IO标准库。同样的,也可以用标准输入输出操作符来读写string对象。
注:① 读取并忽略开头所有的空白字符(如空格,换行符,制表符);
② 读取字符直至再次遇到空白符,读取终止。
三、string对象的操作
s.empty() //如果s为空串,则返回true,否则返回false
s.size() //返回s中字符的个数
s[n] //返回s中位置为n的字符,位置从0开始计数
s1 + s2 //把s1和s2连接成一个新字符串,返回新生成的字符串
s1 = s2 //把s1内容替换为s2的副本
v1 == v2 //比较v1与v2的内容,相等则返回true,否则返回false
!=, <, <=, >, >= //保持这些操作符的含义
size()的返回值类型是
string::size_type
,不要把size的返回值赋值给一个int变量。
string关系操作符
①如果两个string对象长度不同,且短的string对象与长的string对象的前面部分相匹配,则短的string对象小于长的string对象。
②如果两个string对象的字符不同,则比较第一个不匹配的字符。
string对象赋值内部实现:必须先把st1占用的相关内存释放掉,然后再分配给st1足够存放st2副本的内存空间,最后把st2中所有字符复制到新分配的内存空间。
string对象相加
当进行string对象和字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个是string类型的。
四、string对象中字符处理
头文件:cctype
isalnum(c) //如果c是字母或数字,则为true
isalpha(c) //如果c是字母,则为true
iscntrl(c) //如果c是控制字符,则为true
isdigit(c) //如果c是数字,则为true
isgraph(c) //如果c不是空格,但可打印,则为true
islower(c) //如果c是小写字母,则为true
isprint(c) //如果c是可打印的字符,则为true
ispunct(c) //如果c是标点符号,则为true
isspace(c) //如果c是空白字符,则为true
isupper(c) //如果c是大写字母,则为true
isxdigit(c) //如果c是十六进制数,则为true
tolower(c) //如果c是大写字母,则返回其小写字母形式,否则直接返回c
toupper(c) //如果c是小写字母,则返回其大写字母形式,否则直接返回c
PS: 欢迎关注微信公众号:开发者小黑屋,分享优质技术干货。