每日复习笔记4.19

每日复习笔记

C++复习笔记

c++ primer笔记

  1. string类型
    就是简单说说自己的一点理解吧。
    string类型在我看来是一个有点像内置类型,类似intdouble;又有点像一个类类型,使用构造函数创建string类型的对象。
    常见的几种初始化string类型的方式:
string s1;  //调用默认构造函数,string类型的默认值是空串
string s2(s1);  //将s2初始化为另一个对象的副本
string s3("value");  //将s3初始化为一个字符串字面值的副本
string s4(n,'c');  //将s4初始化为字符'c'的n个副本(就是s4包含了n个'c')

通知string类型的对象在我看来也有内置类型的一面,iostream标准库已经内置好了string的读写操作,即通过标准输入输出操作符来读写string对象。

int main(){
	string s;
	cin >> s;
	cout << s <<endl;
	return 0;
}

值得小心的是,在从标准输入读取string时:
a.读取时会忽略开头的所有空白字符(例如空格,换行符,制表符)。
b.读取字符知道再次遇见空白字符。

例如,如果程序输入的是“ HELLO WORLD! ”(开头结尾都存在空格)。

int main(){
	string s1,s2;
	cin >> s1 ;
	cin >> s1 >> s2;
	cout << s1 <<endl;
	cout << s1 << s2 <<endl;
	return 0;
}

第一个输出结果是HELLO
第二个输出结果是HELLOWORLD!

如果想读取整行文本可以使用getline函数。
getline函数需要两个参数:一个输入流对象,一个string对象。和输入操作符不一样的是,getline函数并不忽略行开头的换行符。只要遇到换行符,getline函数就会停止读入并返回,哪怕是第一个字符就是换行符。如果第一个就是换行符,则string参数会被置为空string对象。

int main(){
	string line;
	while(getline(cin,line)){
		cout << line << endl;
	}
	system("pasue");
	return 0;
}

分别输入111111 2 3333 55555 和文件结束符的结果:
在这里插入图片描述

string对象的操作

操作含义
s.empty()如果s是空串,则返回true,否则返回false
s.size()返回s中字符的个数
s[n]返回s中位置为n的字符,位置从0开始计数
s.empty()如果s是空串,则返回true,否则返回false
s1 + s2把s1和s2连接成一个新字符串,并返回这个新生成的字符串
v1 == v2比较v1和v2的内容,如果相等则返回true,否则返回false
!=,<,<=,>和>=保持这些操作符惯有的含义

1)size()函数返回值的类型是string::size_type类型,个人认为这是一种无符号的类型。最好存储size()函数的结果用string::size_type类型。特别需要注意的是,不要把size的返回值赋值给一个int型变量。

2)string对象的关系操作符
关系操作符包括了==,!=,<,<=,>和>=
string对象的比较操作是区分大小写的。多数计算机上,大写的字母位于小写字母之前,任何一个大写字母都小于任意的小写字母。

3)string对象和字符串字面值的连接
c++中是支持string对象和字符串字面值直接使用"+"连接的。
但是需要注意的是,在进行string对象和字符串字面值混合连接时,+操作符的左右操作数必须至少有一个是string类型的。

string s1 = "hello";
string s2 = "world";
string s3 = s1 + ",";  //OK
string s4 = "hello" + ","; //error,**+**两端都是字符串字面值
string s5 = s1 + "," + "world";  //OK
string s6 = "hello" + "," + s2;  //,第一个**+**两端都是字符串字面值。

4)表格中也提到了可以使用下标操作符([])获取string对象中的单个字符。注意,一个string对象的下标是从0开始的。
而且下边操作可以作为左值,

for(string::size_type ix = 0; ix != str.size(); ++ix){
	str[ix] = '6';
}

要小心的是:标准库是不检查索引值的,如果索引的下标越界往往会造成严重的运行时错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值