cin.get() 函数 , 一次从键盘输入一个字符 , 如果 按下 Ctrl + Z 会产生 EOF 也就是 -1 值 ;
调用 cin.get() 函数 后 , 会阻塞等待用户输入 , 用户输入一个字符 , 就会继续执行后续代码 , 如果用户按下 Ctrl + Z 组合键 , cin 会收到 EOF 值 ;
调用 cin.get() 函数 , 是将数据读取一字节到 输入缓冲区中 ,
同理 , 写出数据时 , 也是先写出到 输出缓冲区 , 然后再写出到输出流中 ;
从 键盘 输入到 输入缓冲区 中的数据 , 可以逐个字节获取 , 也可以一次性获取多个字节 ;
在 C++语言中 中 , 标准输入流 和 标准输出流 是 预定义的文件流对象 ,
标准输入流 和 标准输出流 对象可以在程序中 读取输入数据或写入输出数据 ;
输入缓冲区 和 输出缓冲区 是与 标准输入流 和 标准输出流 相关联的缓冲区 , 用于提高 I/O 操作的效率 ;
代码示例 :
#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 字符 , 直接终止循环 , 继续向后执行程序代码 ;
首先 , 声明 char 类型的变量 ;
char a, b, c;
然后 , 调用 cin.get(char c) 函数获取一个字符 , 将获取的字符数据 保存到 变量 c 中 ;
cin.get(c);
完整代码示例 :
#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 个字符读取到 输入流中 , 后面多余的字符会被自动忽略掉 ;