标准库类型string表示可变长的字符序列,内部使用了char数组,使用string类型必须首先包含string头文件
#include <string>
1,string的定义和初始化
在C++中string也提供了多种不同的定义和初始化过程:
string s1;//默认初始化,s1是一个空字符串
string s2(s1);
string s2 = s1;//s2 是s1的一个副本
string s3("hello");//s3是字面量"value"的副本,除了字面值最后的哪个空字符此外
string s3 = "hello";//s3是该字符串字面量的副本
string(5, 'a');// s4的内容是aaaaa
对于上述初始化的区分主要分为直接初始化和拷贝初始化
1)拷贝初始化:使用”=“初始化一个变量,编译器把等号右侧的初始值拷贝到新创建的对象中去。
2)直接初始化:不适用等号时则是直接初始化。
例如:
string s3 = "hello";//拷贝初始化
string(5, 'a');// 直接初始化
2,string对象的操作
操作 | 描述 |
---|---|
os<<s; | 将s写到输出流os当中,返回os |
is>>s; | 从is中读取字符串赋给s,字符串以空白分割,返回is |
getline(is,s); | 从is中读取一行赋给s,返回is |
e.empty(); | s为空返回true,否则返回false |
s.size(); | 返回s中字符的个数 |
s[n]; | 返回s中第n个字符的引用,位置n从0计起 |
s1+s2; | 返回s1和s2连接后的结果 |
s1=s2; | 用s2的副本代替s1中原来的字符 |
s1==s2 | 如果s1和s2中所包含的字符完全一样,则他们相等,string对象的相等性判断对字母的大小写铭感 |
s1!= s2; | 判断非相等 |
<,<=,>,>=; | 利用字符在字典中的顺序进行比较,且对字母的大小写铭感 |
读写string对象
string s;
cin >> s;//写入
cout << s << endl;//输出
3, string对象中字符的处理
在cctype头文件中定义了一组标准函数库
功能 | 描述 |
---|---|
isalnum(a) | 当a是字母或数字时为真 |
isalpha(a) | 当a是字母时为真 |
iscntrl(a) | 当a是控制字符时为真 |
isdigit(a) | 当a是数字时为真 |
isgraph(a) | 当a不是空格但可打印时为真 |
islower(a) | 当a是小写字母时为真 |
isprint(a) | 当a是可打印字符时为真(即a是空格或a具有可视形式) |
ispunct(a) | 当a是标点符号时为真(即a不是控制字符,数字,字母,可打印空白中的一种) |
isspace(a) | 当a是空白时为真(即a是空格,横向制表符,纵向制表符,回车符,换行符,进纸符中的一种) |
isupper(a) | 当a是大写字母时为真 |
isxdigit(a) | 当a是十六进制数字时为真 |
tolower(a) | 如果a是代谢字母,输出对应的小写字母:否则原样输出a; |
toupper(a) | 如果a是小写字母,输出对应的大写字母:否则原样子输出a; |
输出string中每一个字符
string line = "hello word";
for (auto c : line) {
cout << c << endl;
}