C++ primer plus 读书笔记
C++的输入
1.cin.getline()
头文件:iostream
使用的参数必须是C风格字符串
cin.getline()函数有3个参数
- 第一个参数是读的数据存放位置
- 第二个参数是最多读入的数据量,如果超过这个量则报错退出
- 第三个参数是结束符,默认为回车,如果设置的话,遇到设置的符号之后停止输入,但是剩下的部分会留在输入缓冲中
- 注意:不保留换行符,并且自动将换行符去掉
#include<iostream>
using namespace std;
char group[20];
cin.getline(group, 20, '#')//这里的#表示以#作为结束符号,默认情况下是回车,若使用特殊的结束符,则结束符后面的字符会留在输入缓冲中被下一个接收语句接收
2.getline()
头文件:string
输入的容器必须是string类型的,不能用C风格字符串(或数组)
- 第一个参数:cin
- 第二个参数:输入数据的存放位置,必须为string类型
第三个参数:结束符
注意:不保留换行符,并且将换行符去掉
#include<iostream>
#include<string>
using namespace std;
string group;
getline(cin, group, '#')//这里的#表示以#作为结束符号,默认情况下是回车,若使用特殊的结束符,则结束符后面的字符会留在输入缓冲中被下一个接收语句接收
3.cin.get()
头文件:iostream
- 使用的参数必须是C风格字符串,不能用string与cin.getline()是类似的,但是保留换行符,
- 因此,用完一次cin.get(××××)之后需要再调用一次cin.get()来消除这个换行符,否则这个换行符一直都在,会影响后面内容的输入。
- cin.get()输入的是字符char而不是字符串,并且具有连续性,因此是用来判断输入流中每个字符特性的函数
//这个例程使用了cctype函数库的函数判断字符类型,用来统计输入的一串内容中字符和数字的个数各有多少
#include<iostream>
using namespace std;
int main()
{
char ch;
int alpha=0, num=0;
cin.get(ch);
while(ch!='@')
{
if(isalpha(ch))
alpha++;
else if(isdigit(ch))
num++;
cin.get(ch);
}
cout<<alpha<<endl<<num;
return 0;
}
4.gets()
包含在stdio.h中,C语言
输入一行
因此:
读行,使用cin.getline()和string的函数getline()都是可以的!
若要一个一个读,则最好是使用cin.get()一个一个读
5.cctype函数库
判断字符类型的函数:(cctype函数库)
这些都是对字符类型有用的
- isalnum() 判断是否为字符或数字
- isalpha() 判断是否为字符
- isdigit() 判断是否为数字
- islower() 判断是否为小写
- isupper() 判断是否为大写
- isprint() 判断是否为可打印字符
- ispunct() 判断是否为标点符号
- isspace() 判断是否为空格
- isxdigit() 判断是否为16进制数字
- tolower() 转换为小写
- toupper() 转换为大写
6.cin作为while判断语句
- 当输入为ctrl+D时表示错误,其余基本都是正确的