C标准中string函数:
strlen(p) ----返回p的长度;
strcmp(p1,p2)----比较p1,p2的相等性。如果p1==p2,返回0;如果p1>p2,返回一个正值;如果p1<p2,返回一个负值。
strcat(p1,p2)----将p2附加到p1之后,返回p1;
strcpy(p1,p2)----将p2拷贝给p1,返回p1。
C++中string的相关的一些操作:
-
定义和初始化
string s1; //默认初始化
string s2=s1; // s2是s1的副本
string s3="hiya"; //s3是该字符串字面值的副本
string s5("hiya"); //s5是hiya的副本
string s4=(10,'c'); //s4的内容是10个c
-
string对象上的操作
os<<s 将s写到输出流os中,返回os
is<<s 从is中读取字符串赋给s,字符串以空白分隔,返回is
getline(is, s) 从is中读取一行赋给s,返回is
s.empty() s为空返回true,否则返回false
s.size() 返回s中的字符个数
s[n] 返回s中第n个字符的引用,位置n从0开始计起
s1+s2 连接
s1=s2 将s2赋给s1
s1==s2 如果s1和s2中所含的字符完全一样,则他们相等;string对象的相等性判断对字母的大小写敏感
s1!=s2
<, ,=, >,>= 利用字母在字典序的顺序进行比较,且对字母的大小写敏感
eg:
string s;
getline(cin,s);
cout<<s<<endl;
-
比较string对象
s1==s2 比较的是对象内容
在<,<=,>,>=的比较的原则:按字典序来排序:
-
如果2个字符串长度不一样,但其他的都相等,就是长的字符串大于短的字符串;
-
如果2个字符串在某些位置对不上,就会比较第一对出现不同的字符,返回相应的结果。
-
两个string对象相加
-
string对象相加其实就是连接的作用;
-
c++的兼容性 只要保证加法符号的一边有一个是string对象;
-
切记:c++语言中的字符串字面值并不是标准库类型string对象。一定要记得字符串字面值与string是不同的类型。
-
处理string对象中的每个字符和使用范围for循环
-
在cctype头文件中有一些处理字符的函数,我列举比较能用到的
isalnum(c) 当c是字母或者数字时为真
isalpha(c) 当c是字母时为真
isdigit(c) 当c是数字时为真
isgraph(c) 当c不是空格但可打印时为真
ispunct(c) 当c是标点符号时为真
isspace(c) 当c是空白时为真
isupper(c) 当c是大写字母时为真
isxdigit(c) 当c是16进制字母时为真
toupper(c) 如果c是小写,则返回大写字母,如果是大写则原样输出
tolower(c) 如果c是大写字母,则返回小写字母,如果是小写字母则原样输出
2. 处理每个字符使用范围for循环
eg:
//不改变str:
string str("some string");
for(auto c: str)
cout<<c<<endl;
//改变str:
string str("Hello world!!!");
for(auto &c : str)
c=toupper(c)
cout<<s<<endl;