首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【C++】输入输出流 ③ ( cin 输入流对象 | cin.get() 函数获取一个字符数据并返回 | cin.get(char c) 函数获取一个字符数据到变量中 )

【C++】输入输出流 ③ ( cin 输入流对象 | cin.get() 函数获取一个字符数据并返回 | cin.get(char c) 函数获取一个字符数据到变量中 )

作者头像
韩曙亮
发布2023-12-07 13:41:49
发布2023-12-07 13:41:49
2.3K00
代码可运行
举报
运行总次数:0
代码可运行
文章目录
  • 一、cin.get() 函数获取一个字符数据并返回 ( 无参数 )
    • 1、cin.get() 函数获取一个字符数据
    • 2、输入流缓冲区概念
    • 3、代码示例 - cin.get() 函数获取一个字符数据
  • 二、cin.get(char c) 函数获取一个字符数据到变量中 ( 1 个参数 )
    • 1、cin.get(char c) 函数获取一个字符数据到变量中
    • 2、完整代码示例 - cin.get(char c) 函数获取一个字符数据到变量中

一、cin.get() 函数获取一个字符数据并返回 ( 无参数 )


1、cin.get() 函数获取一个字符数据

cin.get() 函数 , 一次从键盘输入一个字符 , 如果 按下 Ctrl + Z 会产生 EOF 也就是 -1 值 ;

调用 cin.get() 函数 后 , 会阻塞等待用户输入 , 用户输入一个字符 , 就会继续执行后续代码 , 如果用户按下 Ctrl + Z 组合键 , cin 会收到 EOF 值 ;

调用 cin.get() 函数 , 是将数据读取一字节到 输入缓冲区中 ,

同理 , 写出数据时 , 也是先写出到 输出缓冲区 , 然后再写出到输出流中 ;

从 键盘 输入到 输入缓冲区 中的数据 , 可以逐个字节获取 , 也可以一次性获取多个字节 ;

2、输入流缓冲区概念

在 C++语言中 中 , 标准输入流 和 标准输出流 是 预定义的文件流对象 ,

  • 标准输入流 对应于 键盘输入
  • 标准输出流 对应于 屏幕输出

标准输入流 和 标准输出流 对象可以在程序中 读取输入数据或写入输出数据 ;

输入缓冲区 和 输出缓冲区 是与 标准输入流 和 标准输出流 相关联的缓冲区 , 用于提高 I/O 操作的效率 ;

  • 输入缓冲区 : 当向 输入流 写入数据时 , 数据首先被写入 输入缓冲区 , 而不是直接写入到程序中 ; 当 输入缓冲区 写满时 , 数据会一次性写入磁盘 ;
  • 输出缓冲区 : 当 程序 向 文件 写出 数据时 , 数据首先被 写出到 输出缓冲区 , 这种缓冲机制可以减少磁盘 I/O 操作的次数 , 从而提高程序的性能 ;

3、代码示例 - cin.get() 函数获取一个字符数据

代码示例 :

代码语言:javascript
代码运行次数:0
运行
复制
#include "iostream"
using namespace std;

int main() {

	char c;

	while (c = cin.get() != EOF)
	{
		// 输出接收的数据
		cout << c << endl;
	}

	// 控制台暂停 , 按任意键继续向后执行
	system("pause");

	return 0;
};

执行结果 :

在命令行中 , 输入 helloworld 字符后 , 数据只是进入到缓冲区中 , 并没有真正读取到应用程序中 ,

在上面的情况下 , 按下回车 , 才开始执行 循环中的语句 , 逐个打印接收的字符 ;

如果想要停止读取 , 按下 Ctrl + Z 按键 , 此时 EOF 被读取到 缓冲区了 ,

然后按下回车 , EOF 被正式读取到应用程序中 , 应用中接到 EOF 字符 , 直接终止循环 , 继续向后执行程序代码 ;

二、cin.get(char c) 函数获取一个字符数据到变量中 ( 1 个参数 )


1、cin.get(char c) 函数获取一个字符数据到变量中

首先 , 声明 char 类型的变量 ;

代码语言:javascript
代码运行次数:0
运行
复制
char a, b, c;

然后 , 调用 cin.get(char c) 函数获取一个字符 , 将获取的字符数据 保存到 变量 c 中 ;

代码语言:javascript
代码运行次数:0
运行
复制
cin.get(c);

2、完整代码示例 - cin.get(char c) 函数获取一个字符数据到变量中

完整代码示例 :

代码语言:javascript
代码运行次数:0
运行
复制
#include "iostream"
using namespace std;

int main() {

	char a, b, c;

	// 读取字符到变量中
	cin.get(a);
	cin.get(b);
	cin.get(c);

	// 输出接收的数据
	cout << "a = " << a << " , b = " << b << " , c = " << c << endl;

	// 控制台暂停 , 按任意键继续向后执行
	system("pause");

	return 0;
};

执行结果 :

输入 3 个字符 “123” , 此时 3 个字符 写入到 cin 输入流 的 输入缓冲区中 ;

然后 , 点击回车键 , 将 输入缓冲区 中的数据 写入到 输入流中 ;

如果输入多个字符 , 如下情况 , 输入了 “123456789” 等 9 个字符 到 输入缓冲区 中 , 按下回车后 , 只会将前 3 个字符读取到 输入流中 , 后面多余的字符会被自动忽略掉 ;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、cin.get() 函数获取一个字符数据并返回 ( 无参数 )
    • 1、cin.get() 函数获取一个字符数据
    • 2、输入流缓冲区概念
    • 3、代码示例 - cin.get() 函数获取一个字符数据
  • 二、cin.get(char c) 函数获取一个字符数据到变量中 ( 1 个参数 )
    • 1、cin.get(char c) 函数获取一个字符数据到变量中
    • 2、完整代码示例 - cin.get(char c) 函数获取一个字符数据到变量中
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档