《C++大学教程》学习笔记(十五)
暂时先跳到第21章,其他内容以后有机会再看。
1.字符串
本章内容较为松散,同样采用列表的形式来记录
getline(cin,string1);
//读取一行赋值给string1
string1.assign(string2);
//把string2复制给string1
string1.append(string2);
//把string2连接到string1之后
string1.at(i);
//访问string1中下标为i的元素
string1.compare(string2);
//比较string1与string2的大小:相等返回0,string1大于string2返回正数,反之负数
string1.substr(7,5);
//取string1下标从7开始长度为5的字串
string1.swap(string2);
//交换两者的内容
string1.find("is");
//在string1中从左找到字符串is开始的下标
string2.rfind("is");
//在string1中从右(反序)找到字符串is开始的下标
string1.erase(62);
//清楚string1从下标62开始直至结尾的内容
string1.replace(position,1,".");
//把下标position开始的,长度为1的字符串用“.”代替
string1.insert(10,string2);
//在string1下标为10的元素前插入string2
string1.c_str();
//把string1转换为C风格的char*字符串
int n = stoi(string1);
//把string1转换为int
2.compare函数
关于compare函数的比较大小,它根据当前字符特性将字符按字典顺序进行逐一比较,字典排序靠前的字符小。
比如说:
#include <iostream>
#include <string>
using namespace std;
int main(){
string str("abcd");
cout << str.compare("abcd") << endl; //相等
cout << str.compare("abc") << endl; //长度多
cout << str.compare("a") << endl; //长度多
cout << str.compare("bc") << endl; //a比b小一个字符
cout << str.compare("e") << endl; //a比e小四个字符
return 0;
}
这段代码的运行结果就是:
我们可以发现尽管字符串“e”比字符串“abcd”要短,但由于第一个字符“a”的字典顺序比“e”要小4个字符,所以compare函数就直接返回了-4 。
而当比较“abcd”与“abc”时,由于这两个字符串前三个字符完全一样,当比较第四个字符“d”与“”时,显然是“abcd”更大一些,所以compare函数就直接返回了1 。需要注意的是因为长度原因返回的值只有1(比它长)和 -1(比它短)。