标准库string类型:
string类型支持长度可变的字符串.
#include<string>
using std::string;
1.string对象的定义和初始化
string s1; //默认构造函数,s1为空串
string s2(s1); //将s2初始化为s1的一个副本
string s3("value"); //将s3初始化为一个字符串字面值副本
string s4(n,'c'); //将s4初始化为字符‘c’的n个副本
2.string对象的读写
string类型的输入操作符: 读取并忽略开头所有的空白字符(如空格、换行符、制表符); 读取字符直至再次遇到空白字符,读取终止。
2.1读入未知数目的string对象:
string word;
while(cin>>word)
cout<<word<<endl;
2.2用getline读取整行文本:
getline接收两个参数,一个输入流对象和一个string对象。 getline函数从输入流的下一行读取,并保存读取的内容到string中,但不包括换行符.
由于getline函数返回时丢弃换行符,换行符并不会存储在string对象中。
3.string 对象的操作:
s.empty() 若s为空串,则返回true,否则返回false
s.size() 返回s中字符的个数
s[n] 返回s中位置为n的字符,位置从0开始计数
s1=s2 将s1内容替换为s2的副本
s1==s2 比较s1和s2的内容,相等则返回true,否则返回false
!= < <= > >= 保持这些操作符的惯有含义
3.1 string 的size和empty操作
判断string对象是否为空 :if(str.size()==0) 或者 if(str.empty())
3.2 string::size_type类型
size操作返回的是string::size_type类型的值。
为了使用由string类型定义的size_type类型,必须加上作用域操作符来说明所使用的size_type类型是有string类定义的。
任何存储string的size操作结果的变量必须为string::size_type类型,注意不要把size的返回值赋给一个int变量。
string::size_type是unsigned型
3.3 string关系操作符
string类定义了关系操作符来比较两个string值的大小。
string对象比较操作是区分大小写的
3.4 +操作符
当进行string对象和字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个是string类型的,不能将两个字符串字面值相加。
3.5从string对象获取字符
s[s.size()-1]表示s的最后一个字符
4.string对象中字符的处理
对string对象中的单个字符进行处理,例如,通常需要知道某个特殊字符是否为空白字符、字母或数字。这些函数在cctype头文件中定义,实际利用了C标准库的ctype.h头文件中的函数。
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
ispunt(c) 如果c是标点符号,则为true
isspace(c) 如果c是空白字符,则为true
isupper(c) 如果c是大写字母,则为true
isxdigit(c) 如果c是十六进制数,则为true
tolower(c) 如果c是大写字母,则返回其小写字母形式,否则直接返回c
toupper(c) 如果c是小写字母,则返回其大写字母形式,否则直接返回c