《C++大学教程》学习笔记(十五)

《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 
#include 
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;
}

这段代码的运行结果就是:
《C++大学教程》学习笔记(十五)_第1张图片
我们可以发现尽管字符串“e”比字符串“abcd”要短,但由于第一个字符“a”的字典顺序比“e”要小4个字符,所以compare函数就直接返回了-4 。

而当比较“abcd”与“abc”时,由于这两个字符串前三个字符完全一样,当比较第四个字符“d”与“”时,显然是“abcd”更大一些,所以compare函数就直接返回了1 。需要注意的是因为长度原因返回的值只有1(比它长)和 -1(比它短)。

你可能感兴趣的:(C++)