提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
标准输入流
(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 charbuffer,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);