栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

STL:C++输入输出流、缓冲区

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

STL:C++输入输出流、缓冲区

一.输入输出流
  1. 键盘输入数据到程序——标准输入input(cin);
  2. 程序数据输出到显示器——标准输出output(cout);
  3. 标准输入+标准输出=标准I/O
  4. 文件的输入和输出——文件I/O。
cout;//标准输出—输出数据到显示器
cin;//标准输入—输出数据到显示器
cerr;//标准错误—输出数据到显示器
clog;//标准日志—输出数据到显示器

cerr和clog区别:cerr没有缓冲区,clog有缓冲区。

二.缓冲区

三.标准输入流

标准输入流cin,重点掌握函数,如下:

cin.get();//一次只能读取一个字符
cin.get(一个参数);//读取一个字符
cin.get(两个参数);//可以读字符串
cin.getline();//读取一行数据
cin.ignore(n);//忽略n个字符
cin.peek();//查看缓存中第一个字符
cin.putback();//给缓存中放数据

get()和peek()区别:
get()取出缓存区中的数据;
peek()查看缓存区的第一个字符,不会取走;

1.测试:cin.get()
将数据从缓冲区拿走。
如果缓冲区没有数据,会发生阻塞,等待用户输入数据,然后再从缓冲区拿走。

void test01() {
	char ch;
	//cin.get()会从缓冲区拿取数据
	//EOF是键盘输入结束标志,Ctrl+Z结束
	while ((ch=cin.get())!=EOF)
	{
		cout << ch << endl;
	}
}

结果:

2.测试:cin.get(一个参数)

char ch1;
cin.get(ch1);//读取一个字符
cout << ch1;

结果:

3.测试:cin.get(两个参数)
从缓冲区读取一个字符串

char buf[256] = { 0 };
cin.get(buf, 256);//从缓冲区读取一个字符串

4.测试:cin.getline()
读取一行数据

char buf[256] = { 0 };
cin.getline(buf, 256);//读取一行数据

5.测试:cin.ignore()

  • cin.ignore() 忽略一个字符;
  • cin.ignore(n) 忽略n个字符;
  • cin.ignore(n,’n’) 忽略n个字符,但遇到回车结束;
char ch;
cin.get(ch);
cout << "输出ch=" << ch << endl;
cin.ignore();//忽略一个字符
cin.get(ch);
cout << "输出ch=" << ch << endl;

结果:

修改:

cin.ignore(2);//忽略两个字符


6.测试cin.peek()
偷窥一下缓冲区,返回第一个字符,不是取走!!!字符还在缓冲区。
案例1:

char ch;
ch = cin.peek();//偷窥一下缓冲区,返回第一个字符
cout << ch << endl;

结果:

案例2:(好好看!!!)

void test04() {
	char ch;
	ch = cin.peek();//偷窥一下缓冲区,返回第一个字符
	if (ch >= '0' && ch <= '9') {
		int number;
		cin >> number;//cin将缓冲区数据给number
		cout << "你输入的是数字:" << number << endl;
	}
	else {
		char buf[1024] = { 0 };
		cin >> buf;
		cout << "你输入的是字符串:" << buf << endl;
	}
}

结果:

6.测试:cin.putback()
与cin.get()对应,将从缓冲区拿走的数据,再放回缓冲区。

	char ch;
	cin.get(ch);//从缓冲区取走一个字符
	cout << "缓冲区第一位是:" << (char)cin.peek() << endl;
	if (ch >= '0' && ch <= '9') {
		cin.putback(ch);
		int number;
		cin >> number;
		cout << "输入的是数字:"<> buf;
		cout << "输入的字符串是:" << buf << endl;
	}

结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/698164.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号