Type String
string类型是长度可变的字符串类型,头文件中必须包括#include <string>
,同时其也是在标准命名空间中定义的。
定义及初始化
string s1
默认定义,s1为空
string s2(s1)
s2复制s1
string s2=s1
s2复制s1
string s3("value")
s3初始化为“value”
string s3="value"
s3初始化为“value”
string s4(n,'c')
s4初始化为n个c组成的字符串,即“ccc…cccc”
操作
读写
基础:
cin>>s;
cout<<s<<endl;
读写文件:os<<s
is>>s
读取一整行:getline(is,s)
/getline(cin,s)
判断字符串是否为空:s.empty()
,返回true/false
返回字符数:s.size()
返回字符串中的第n+1个字符:s[n]
s1和s2连接:s1+s2
s1="hello";
s2="world";
s1+=s2; //则s1输出"helloworld"
s2复制给s1:s1=s2
判断两个字符串是否相等s1==s2
类似的还有!=,<,>,<=,>=
区分大小写,逐一对应根据字典序比较
输入时如果中间有空格或者换行,则后面输入的将被忽略
对字符串中单个字符的操作
包含头文件:#include <cctype>
逐个处理全部字符
基本操作:Range-Based for
for(auto c : str)
cout<<c;
输出str中的每一个字符,用auto让编译器自动识别其中的每一个字符更好
还有一些比较常用的语句:
语句 | 含义 |
---|---|
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是空格,tab等返回true |
isupper(c) | 如果c是大写字母返回true |
isxdigit(c) | 如果c是十六进制数返回true |
tolower(c) | 如果c是大写则返回小写,否则不变 |
toupper(c) | 如果c是小写则返回大写,否则不变 |
如果要修改,则
for(auto &c : s) //&c是关键
c=toupper(c); //全部改成大写
处理其中单个字符
两种方法:①采用类似数组的形式来找每一个字符的地址s[i]②使用迭代器