计算机程序设计c++ 13-1:标准输入输出与文件操作

什么是流及流库

是指从一个位置向另一个位置传输的一连串数据的集合

在输入输出过程中,会在内存中为每一个数据流开辟一个内存缓冲区,用来存数据。从而匹配不同工作效率的对象。

在这里插入图片描述

输入输出流库结构

在这里插入图片描述

标准输入流

标准输入流——从标准输入设备(键盘)流向程序的数据.

一般使用 cin 流对象进行输入
例如:

int a, b;
cin >>a>>b; // 从键盘输入2个整数

**>> 有什么特点 **

  • 1.符号重载
  • 2.以空格、回车做分隔符

cin是istream类的对象,除了>>符号外,常用函数如下
函数 功能

  • read 无格式输入指定字节数
  • get 从流中提取字符,包括空格
  • getline 从流中提取一行字符
  • ignore 提取并丢弃流中指定字符
  • peek 返回流中下一个字符,但不从流中删除
  • gcount 统计最后输入的字符个数
  • seekg 移动输入流指针
  • tellg 返回输入流中指定位置的指针值

介绍get函数和getline函数

get函数

istream类的get函数有三种

int get();
istream & get(char & rch);
istream & get(char *pch, int nCount, char delim='\n');

在这里插入图片描述

利用无参数get函数读入数据
#include <iostream>

using namespace std;

int main()
{
	char c;
	cout << "enter a sentence:" >> endl;
	while (1) 
	{
		c = cin.get();
		if(c == '\n')
		{
			break;
		}
		else
			cout << c;
	}
	return 0;
}

其中c=cin.get() 可以用cin.get(c)替换

执行结果如下:

enter a sentern:
I am a student! (输入)
I am a student! (输出)
利用多个参数的get函数读入数据
#include<iostream>
using namespace std;

int main()
{
	char ch[80];
	cout << "enter a sentence:" << endl;
	cin.get(ch,70,'|');  // 结束符‘|’
	cout<<ch<<endl;
	cin.ignore(1);  // 忽略一个字符
	cin.get(ch,70);
	cout<<ch<<endl;
	return 0;
}

执行结果如下:

enter a sentence:
beijingshi|chaoyangqu
beijingshi
chaoyangqu
istream类的getline函数
istream& getline(char* pch, int nCount, char delim = '\n')

在这里插入图片描述

#include<iostream>
using namespace std;

int main()
{
	char ch[80];
	cout<<"enter a sentence:"<<endl;
	cin.getline(ch,70,'|');  //读69个字符或遇'|'结束
	cout<<ch<<endl;  // 这个地方不需要使用cin.ignore(1), 原因是geline会将结束字符自动舍去
	cin.getline(ch,70);  //读69个字符或遇'\n'结束
	cout<<ch<<endl;
	return 0;
}

执行结果如下:

enter a sentence:
beijingshi|chaoyangqu
beijingshi
chaoyangqu

cin.get() 与 cin.getline()的比较

cin.get(字符数组, 字符个数n, 终止字符)
cin.getline(字符指针, 字符个数n, 终止字符)

相同之处

  • 从输入流提取n-1个字符放入数组
  • 函数返回值是非0值
  • 若遇到文件结束符,则返回值为0

不同之处

  • 当读到终止字符时:
    • cin.getline(): 将指针移动到终止字符之后
    • cin.get(): 将指针移动到终止字符处
  • 下次继续读取时候的位置不同
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

uncle_ll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值