C# · 12月 20, 2021

《C++面向对象程序设计》课程笔记 lessen7

1. string 类

1 string 对象的初始化

string 类是模板类:

typedef basic_string string; 

 使用 string 类要包含头文件

string 对象的初始化:

string s1(“MARCH”);

string s2 = “APRIL”;

string s3(8,’x’);

 错误的初始化方法:(不能通过一个字符和一个整数来初始化 sstring)

string error1 = ‘c’;

string error2(‘u’);

string error3 = 22;

string error4(8);

 可以将字符赋值给 string 对象。但不能用字符初始化 string 对象。

string s;

s = ‘n’;

string 对象的长度用成员函数 length() 读取 

string s(“hello”);

cout << s.length() << endl;

 string 支持流读取运算符

string stringObject;

cin >> stringObject;

 string 支持 getline 函数

string s;

getline(cin,s);

 2 string 对象的赋值和连接

用 “=” 赋值 

string s1(“cat”);

string s2;

s2 = s1;

 用 assign 成员函数复制

string s1(“cat”);

string s3;

s3.assign(s1);

 用 assign 成员函数部分复制

string s1(“catpig”);

string s3;

s3.assign(s1,1,3);

//从 s1 中下标为1的字符开始复制3个字符

单个字符复制 

s2[5] = s1[3] = ‘a’;

逐个访问 string 对象中的字符

string s1(“Hello”);

for(int i=0;i<s1.length();i++)

cout << s1.at(i) << endl;

 成员函数 at 会做范围检查,如果超出范围,会抛出 out_of_range 异常,而下标运算符 [ ] 不做范围检查。

用 “+” 运算符连接字符串 

string s1(“good”);

string s2(“morning!”);

s1 += s2;

cout << s1;

 用成员函数 append 连接字符串

string s1(“good”);

string s2(“morning!”);

s1.append(s2);

cout << s1;

s2.append(s1,3,s1.size()); //s1.stze(),s1字符数

//下标为3开始,s1,size()个字符,如果字符串内没有足够字符,则复制到字符串最后一个字符

cout << s2;

 3 比较 string 对象

用关系运算符比较 string 大小:==,>,>=,<,<=,!= 。返回值都是 bool 类型,成立返回 true,否则返回 false。

用compare 成员函数比较 string 对象的大小。

string s1(“hello”),s2(“hello”),s3(“hell”);

int f1 = s1.compare(s2);

int f2 = s1.compare(s3);

int f3 = s3.compare(s1);

int f4 = s1.compare(1,2,s3,3);//s1:1-2; s3:0-3

int f5 = s1.compare(0,s1.size(),s3); //s1:0-end

cout << f1 << endl << f2 << endl << f3 << endl << f4 << endl << f5 << endl;

//输出:0 // hello == hello

// 1 // hello > hell

// -1 // hell < hello

// -1 // el < hell

// 1 // hello > hell