C++输入输出流

C++输入输出流,第1张

C++用继承方法建立了I/O流类库,输入输出过程(input/output)称为流,输入是指将数据从输入设备保存到内存的过程,输出是指从内存传输到输入设备的过程

1.输入输出流对象

1.1 标准流对象

键盘是标准输入流设备,屏幕是标准输出流设备class="superseo">cin(istream的对象,从键盘输入数据到内存中)cout(ostream,从内存输出数据到屏幕上),cerr和 clog是ostream的对象,处理错误信息标准输出

1.2 文件流对象

对文件进行输入(读)输出(写) *** 作

定义文件流对象,通过文件流的成员函数进行打开 *** 作

void open(const char*filename,mode) mode为打开方式

ifstream outfile;//以输入方式打开文件

outfile.open("file.txt")

mode
ios::in(ifstream默认打开方式)以输入方式打开文件,,该文件必须存在
ios::out(ofstream)以输出方式打开文件,
ios::app以追加方式打开文件,所有输出附加在文件末尾,指针指向EOF
ios::ate文件指针指向EOF
ios::binary以二进制方式(通常为纯数值文件)打开文件
ios::trunc如果文件存在,先删除文件内容

2.输入输出流对象的成员函数

2.1运算符重载<<和>>

<<插入运算符

a. 标准输出 cout<

b.文件输出 将内存中的数据写入文件中

fstream outfile("file.txt",ios::out)

outfile<

outfile.close();

//先在程序的目录下生成file.txt的文件,将x,y,z对应内存中的数据写入文件中,关闭文件

>>提取运算符

a.标准输入 从键盘提取数据到内存

cin>>a>>b>>c;

b. 文件输入 >>将文件中的数据读取到内存中

fstream infile("file.txt",ios::in)

infile>>a>>b>>c;

infile.close();//将上建立的file.txt文件,数据依次读取到变量 a,b c中

2.2 常见输入流的成员函数

2.2.1 get() 从输入设备获取单个字符

a. 标准输入 get()

char ch;
while(ch=cin.get()!='\n')//输入回车符时循环结束
{ cout<

b. 文件输入

get()

fstream outfile("file.txt",ios::out);
outfile<<"Visual Studio“;
outfile.close();
fstream infile("file.txt",ios::in)
char ch;
while(ch=infile.get()!=EOF)
cout<

get(ch)//字符型变量作为参数,函数调用时提取一个字符并将其写入该变量的内存地址中,读取失败(遇到文件结束符 EOF),返回为假

while(infile.get(ch))
cout<

2.2.2 getline() 从输入设备中读取一个字符串

参数 in.getline(字符数组或字符型指针,字符个数n,终止标识符)

n=n-1+'\0'

a. 标准输入 可读取含空白字符的字符串 直到达到个数或遇到终止标识符

while(cin.getline(s,80))
//ctrl+z(eof)结束循环

b. 文本文件输入 读取文件并输出到数组中

fstream outfile;
outfile("file.txt",ios::out);
outfile<<"Visual Studio"<len)
strcpy(s,ch);
}

2.2.3 read() 输入流对象可调用此函数实现从键盘输入制定个数的多个字符的 *** 作

in.read(字符型指针,字符个数n) 可读取空白字符,不会自动添加字符结束符'\0'

a. 标准输入

char s[20];
cin.read(s,12);
for(int i=0;i<12;i++)
cout<

b.二进制文件输入

fstream outfile("file.dat",ios::binary|ios::out);
for(int a=1;a<=10;a++)
outfile.write((char*)&a,sizeof(a));
outfile.close();
fstream infile("file.dat".ios::binary|ios::in);
while(infile.read((char*)&a,sizeof(a)))
cout<

read函数要求第一个参数为字符型指针,(char*)&a 强制将变量a的地址转换为字符型指针

 2.3 常见输出流的成员函数

2.3.1 put()函数 输出单个字符的成员函数

a.标准输出//以引用方式返回调用该函数所使用的输出流对象,支持连续调用

char ch='a';
cout.put(ch);
cout.put('b').put('c')<

b.文本文件输出

char ch='a';
fstream outfile("file.txt",ios::out)
outfile.put(ch);
outfile.close();

2.3.2 write()函数  用于输出多个字符的成员函数write(),输出流对象可调用此函数向输出设备输出多个指定个数的多个字符的 *** 作

a. 标准输出流 write(字符型指针,字节数n)

char*ch="一带一路 协同共进";
cout.write(ch,8).put('\n');
cout.write(ch,strlen(ch))<

b. 二进制文件输出

int a=12345;
fstream outasc("file.txt",ios::out);
fstream outbin("file.dat",ios::binary|ios::in);
outasc<
#include
#include
using namespace std;
struct Student//将三名学生的信息存入二进制文件后,再读到结构体数组中,输入到屏幕上
{
char num[10];
char name[20];
int score;
};
int main()
{
Student stu[]={
{"101","张三”,89},
{"102","李四",91},
{"103","王五",85}
};
fstream outfile("info.dat",ios::binary|ios::out);
for(int i=0;i<3;i++)
outfile.write((char*)&stu[i],sizeof(stu[i]);
outfile.close();
fstream infile("info.dat",ios::binary|ios::in);
for(int i=0;i<3;i++)
infile.read((char*)&stu.[i],sizeof(stu[i]);
cout<

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/993131.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)