C++ Primer Plus笔记
每次读取一行字符串的输入:
1.getline()
例:将姓名读入到一个包含20个元素的name数组中:
cin.getline(name,20);
该语句通过换行符来确定结尾但并不保存换行符,存储时用空字符代替换行符。
2.get()
调用方式与getline()类似,但会将换行符留在输入队列中,使得连续调用两次时,第二次调用看到的第一个字符便是换行符从而无法读取真正内容,解决方法:
1)使用不带任何参数的cin.get():
cin.get(name,size);
cin.get();
cin.get(deseert,size);
(2)将两个类成员函数拼接起来:
cin.get(name,size).get();
cin.get(deseert,size);
3.以上两种针对数组,在字符串中的表示方法如下:
getline(cin,string);
cout显示布尔型
cout.setf(ios_base::boolalpha);
老式c++使用:
cout.setf(ios:boolalpha);
strcmp()用法
1.str1和str2相等,则下面表达式为true:
strcmp(str1,str2)==0
2.若str1和str2不相等,则下面两个表达式均为true:
strcmp(str1,str2)!==0
strcmp(str1,str2)
3.str1在str2前面,则下面表达式为true:
strcmp(str1,str2) < 0
4.str1在str2后面,则下面表达式为true:
strcmp(str1,str2) > 0
关于cin.get的一点补充
在第9章的学习中看到这样的一段代码有些不理解,经查阅资料之后进行一些补充,代码如下:
cin.get(next);
while (next != '\n')
cin.get(next);
在该代码之前还有一个cin.get(input,ArSize)操作,以下是关于该代码段的理解:
cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格 ,cin.get(input,ArSize)将读取输入直到到达行尾或读取了ArSize-1个字符为止,余下的将留在输入队列中。
cin.get(字符变量名)可以用来接收字符,即cin.get(next)用来读取行输入后的字符,判断是否输入换行符
该段代码先读一个字符next,然后,检查它是不是回车,如果不是,说明有多余的数据在缓存中,将其读出来(还要读剩余所有不想要的,所以用while循环,直到读到回车),但是不做任何处理,这个命令就是清除缓存中的数据,以保证下次读取的时候,缓存是空的,只需要读键盘输入的内容。
主要目的是:控制输入是程序设计者想要的内容,将多余的信息忽略掉。