开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 28 天,点击查看活动详情
cin >>(在头文件<iostream>)
结束条件: 回车,空格,tab
用法: cin >> 变量
处理方法: cin从输入缓冲区中读取符合目标变量类型的字符,数字等,直到遇到结束符停止当前读入。
关键点:
- cin是不接收:回车,空格,tab(即下一个cin不会读入上一个cin所遗留的结束符,而是跳过往下读入)。
- 缓冲区中的回车不会被舍弃。
- 只有遇到回车 (其他结束符不行),且所有的cin在输入缓冲区中都读到了相应的内容,才会把cin从输入缓冲区中读出的内容读入到相应变量中。
cin.get()(在头文件<iostream>)
方式:0 参数的形式
结束条件: 输入的字符数量满足所有使用该函数的变量读取后,再回车即可结束 (由于它可以接收回车,所以回车也算一个字符).
用法: cin.get()
返回值: 字符的ASCII 码
处理方式: 仅从输入流中读取一个字符,并且返回该字符的ASCII 码
关键点:
- 可以接收空格,tab,回车。
- 缓冲区中的回车不会被舍弃,会继续被下一个读入函数所使用。
方式:1 参数的形式
结束条件: 输入的字符满足所有使用该函数的变量读取后,再回车即可结束 (由于它可以接收回车,所以回车也算一个字符).
用法: cin.get(字符变量)
返回值: cin流对象
处理方法: 仅从输入流中读取一个****字符并将该字符赋值给传入的变量
关键点:
- 可以接收空格,tab,回车。
- 缓冲区中的回车不会被舍弃,会继续被下一个读入函数所使用。
- 由于返回值是cin流对象,所以可以采用链式调用多个get函数。
方式:2 参数的形式
结束条件: 遇到回车即可结束
用法: cin.get(字符数组, 读入字符数量n)
返回值: cin流对象
处理方法:2参数的形式,get函数处理起来会比较特殊,例如:cin.get(字符数组, n) ,则仅从输入流中读取 n-1个字符,字符数组末尾会用 '\0'补充
关键点:
- 可以接收空格,tab (回车不行)。
- 若一开始就以回车结束,则最后的结束符回车在缓冲区中将会被舍弃。
- 当**读入字符数量n **大于字符数组的实际长度的时候,系统会自动扩张数组的长度使其可以放入更多的字符(但仅限打印,实际字符数组空间并未改变),当然不建议这么做。
- 由于返回值是cin流对象,所以可以采用链式调用多个get函数。
- 当输入的实际字符个数少于n-1的时候回车结束,这时不足的部分会自动用 '\0'补充。
方式:3 参数形式
结束条件: 输入的字符数量达到了n-1或者遇到了第三个参数(自定义的截断符),再回车即可结束 (其中n为传入的第二个参数,表示读入字符数量);
用法: cin.get(字符数组, 读入字符数量n, 自定义截断符s)
返回值: cin流对象
处理方式: 从输入流中读取字符,但仅从输入流中读取n-1个字符,字符数组末尾会用 ‘\0’补充,当遇到了自定义的截断符时,会停止后面字符读入数组中,并且截断字符也不会读入。
关键点:
- 可以接收空格,tab,回车。
- 当**读入字符数量n **大于字符数组的实际长度的时候,系统会自动扩张数组的长度使其可以放入更多的字符(但仅限打印,实际字符数组空间并未改变),当然不建议这么做。
- 由于返回值是cin流对象,所以可以采用链式调用多个get函数。
- 遇到了截断符s,截断对后面字符的读入,并且缓冲区中的截断符s也会被舍弃。
- 缓冲区中的回车不会被舍弃,会继续被下一个读入函数所使用。
- 当输入的实际字符个数少于n-1的时候回车结束,这时不足的部分会自动用 '\0'补充。
cin.getline() (在头文件<iostream>)
方式:2 参数形式
结束条件: 遇到回车即可结束
用法: cin.getline(字符数组,读入字符数量n)
返回值: cin流对象
处理方式: 从输入流缓冲区中读取n-1个字符到字符数组中,字符数组末尾会用 '\0'补充
关键点:
- 可以接收空格,tab (回车不行)。
- 由于返回值是cin流对象,所以可以采用链式调用。
- 输入流缓冲区中,从结束符开始(包括结束符)全部清空,所以不要在它后面写相关的读取输入流的函数的代码。
- 当输入的实际字符个数少于n-1的时候回车结束,这时不足的部分会自动用 '\0'补充。
- 当**读入字符数量n **大于字符数组的实际长度的时候,仍然只会读入输入流中的前n-1个字符。
方式:3 参数形式
结束条件: 遇到回车即可结束
用法: cin.getline(字符数组,读入字符数量n, 自定义截断符s)
返回值: cin流对象
处理方式: 从输入流缓冲区中读取n-1个字符到字符数组中,字符数组末尾会用 '\0'补充,当遇到了自定义的截断符时,会停止后面字符读入数组中,并且截断字符也不会读入。
关键点:
- 可以接收空格,tab (回车不行)。
- 由于返回值是cin流对象,所以可以采用链式调用。
- 输入流缓冲区中从,结束符开始(包括结束符)全部清空,所以不要在它后面写相关的读取输入流的函数的代码。
- 当输入的实际字符个数少于n-1的时候回车结束,这时不足的部分会自动用 '\0'补充。
- 遇到了截断符s,截断对后面字符的读入,并且缓冲区中的截断符s也会被舍弃。
- 当**读入字符数量n **大于字符数组的实际长度的时候,仍然只会读入输入流中的前n-1个字符。
getline() (在头文件<string>)
结束条件: 遇到回车即可结束
用法: getline(cin,字符串str)
返回值: cin流对象
处理方式: 从输入流缓冲区中读取字符直到遇到回车结束
关键点
- 可以接收空格,tab (回车不行)。
- 由于返回值是cin流对象,所以可以采用链式调用。
- 缓冲区中的结束符会被舍弃。所以一般用它来读取一整行字符串。
- 不会在字符串末尾添加 '\0'
getchar() (在头文件<iostream>)
结束条件: 遇到回车即可结束
用法: getchar() 或 ch = getchar() 其中ch为字符型或整型
返回值: 字符的ASCII 码
处理方式: 仅从输入流缓冲区中读取一个字符直到遇到回车结束
关键点:
- 可以接收空格,tab,回车。
- 缓冲区中的结束符不会被舍弃。
- 如果没有用循环的话,getchar()每次只能从输入流中读取一个字符。