输入输出流

本文详细介绍了C++中的标准输入流,包括get()函数、getline()函数及其不同用法,用于读取字符和整行文本。同时讲解了istream类的eof()、peek()、putback()和ignore()等成员函数,用于文件状态判断、预览字符、回退字符和跳过字符。此外,还阐述了文件的打开与关闭,以及二进制文件的读写操作。最后提到了字符串流的创建和使用。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


标准输入流

(1)用于字符输入的流成员函数
用get函数读入一个字符
cin.get()

无参数的get函数,用来从指定的输入流中提取一个字符(包括空白符),函数返回值就是读入的字符。若遇到输入流中的文件结束符,则函数返回值EOF(EOF是在iostream头文件中定义的符号常量,代表-1)

#include<iostream>
using namespace std;
int main()
{
	int c;
	cout<<"enter a sentence:"<<endl;
	while((c=cin.get())!=EOF)
	cout.put(c);
	return c;
}

有一个参数的

cin.get(ch)

其作用是从输入流中读取一个字符,赋给字符变量ch。如果读取成功则函数返回非0值,失败返回0值。

有3个参数

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

读取n-1个字符。

用成员函数getline函数读取一行字符
cin.getline(字符数组或字符指针,字符个数你,终止标志字符)
如:cin.getline(ch,20,'/');
(2)istream类的其他成员函数
eof函数

:表示”文件结束“。

读一行字符,将其中的非空格字符输出
#include<iostream>
using namespace std;
int main()
{
	char c;
	cout<<"enter a sentence:"<<endl;
	while(!cin.eof() )
	if((c=cin.get())!=' ')
	cout.put(c);
	return 0;
}
peek函数

peek函数的作用是观测下一个字符。
调用形式:c=cin.peek();

putback函数

调用形式:cin.putback(ch);
作用是将前面用get或getline函数从输入流中读取的字符ch返回到输入流中,插入到当前的指针位置,供后面读取。

#include<iostream>
using namespace std;
int main()
{
	char c[20];
	int ch;
	cout<<"please enter a sentence:"<<endl;
	cin.getline(c,15,'/');
	cout<<"the first part is:"<<endl;
	
	ch=cin.peek();//观看当前字符 
	cout<<ch<<endl;
	
	cin.putback(c[0]);//将“i"插入到指针所指处
	cin.getline(c,15,'/');
	cout<<c<<endl;
	return 0;
}
输入:i an a boy./an astudent./
运行结果:i am a boy.
32 ( 下一个字符是空格)
i am a student
ignore函数

调用形式:cin.ignore(n,终止字符)

作用是跳过输入流中n个字符,或在遇到指定的终止字符时提前结束。

也可以ignore()相当于ignore(1,EOF)

文件的打开与关闭

打开
(1)调用文件流的成员函数open

ofstream outfile;//定义ofstream类(输出文件流类)对象outfile
outfile.open("fl.dat",ios::out);//使文件流与fl.dat文件建立关联

文件流对象.open(磁盘文件名,输入输出方式);

(2)在定义文件流对象时指定参数

ostream outfile("fl.dat",ios::out);

关闭
outfile.close();//将输出文件流所关联的磁盘文件关闭

#include<fstream>
#include<iostream>
using namespace std;
int main()
{
	int a[10];
	ofstream outfile("fl.dat",ios::out);//定义文件流对象,打开磁盘文件fl。dat
	if(!outfile)//如果打开失败,outfile返回0
	{
		cerr<<"error"<<endl;
		exit(1);
	}
	for (int i=0;i<10;i++)
	{
		cin>>a[i];
		outfile<<a[i]<<" "; //向磁盘文件输出数据
	} 
	outfile.close();//关闭磁盘文件
	return 0; 
}
对二进制文件的操作

用成员函数read和write读写二进制文件:
istream&read(charbuffer,int len);
ostream&write(const char
buffer,int len);

注:len是读写的字节数,调用的方式:a.write(p1,50);
a是输出文件流对象,

字符串流

建立输出字符串流对象

ostrstream::ostrstream(char*buffer,int n,int mode=ios::out);

建立输入字符串流对象

istrstream::istrstream(char*buffer);
istrstream::istrstream(char*buffer,int n);
buffer是用来指向字符串数组首元素的指针,用来初始化流对象

建立输入输出字符串流对象

strstream::strstream(char*buffer,int n,int mode);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值