C++输入输出流库之fstream文件流、从磁盘读取数据、把数据写入磁盘

流的概念

数据传输像流水,不管数据的类型,都按字节二进制传输。输入输出时不区分类型,把数据都当二进制流对待,系统根据需要自动转换数据类型。

三种基本流

标准I/O:键盘—>内存程序—>显示器

文件I/O::磁盘文件—>程序—>文件

字符串I/O: 内存—>程序—>内存

 

  头文件:

 #include <iostream>   用于标准I/O

 #include <fstream>     用于文件I/O

 #include <sstream>    用于字符串I/O

 #include <string>        载入string类

标准I/O流对象

cin和cout都是对象,可以调用函数。

cin.get():获取一个字符

cin.getline():获取一行字符

cin.peek():获取当前字符的ASCII码

cin.putback() :把指定字符插入到流中当前的位置

cout.put( ):单个输出字符

文件I/O流

文件取名:不能使用* ? < > | “ : /  \ 9个字符

文件分类:

按数据的存储格式:文本文件(人看的),二进制文件(计算机运行用的)

按用途分(按扩展名):*.mp3,  *.docx , *.avi….

设备文件名:系统占用了的,不能被一般用户占用,如:

 COM1 , Con 表示控制台键盘显示器; LPT并口(用于接一些通信设备或打印机)

文件流类:#include <fstream>

1>ofstream:输出类,用于向文件中写数据的

2>ifstream:输入类,从磁盘上读数据到内存的

3>fstream: I/O类,读或写文件都可以

文件流工作原理

操作文件的三个步骤:

打开磁盘文件 ——>(读或写入内存) ——>关闭文件

open()——>(fin>>   fout<<)  ——>close()

ofstream从内存写入到文本文件中去

void main(){
    ofstream fout;//1、创建一个文件流输出对象
    fout.open("A:\\studeng.txt",ios::out);//2、文件输出流对象调用开启函数-指定文件的路径、指定数据写入方式为ios::out
    //追加方式是ios::app
    int arr[3]={5,2,0};//将数组内容写入文本文件中去
    for (int  i = 0; i < 3; i++)
    {
        //3、文件流输出对象输出数据,与cout的格式相同
         fout << arr[i]<<" ";
    }
        fout.close();//4、关闭文件流输出对象
        fout.open("A:\\studeng.txt", ios::app);//可以追加内容到文本中
        system("pause");
}

ifstream从文本文件中读取到内存中去

void mian(){
    ifstream fin;//实例化输入对象fin
    fin.open("A:\\studeng.txt", ios::in);//指定路径(注意\\是转义字符),输入方式
    int no = 1;
    student* st = (student*)calloc(sizeof(student), no);
    while (!fin.eof())
    {
        fin >> sh0;fin >> xm0; fin >> xb0; fin >> heigh0; fin >> score0;
        (st+(no-1))->setstudent(sh0,xm0, xb0, heigh0, score0);
        //从文本文件中获取输入数据,赋值给student对象
        //cout << sh0 << xm0<< xb0<<heigh0 << score0 << endl;
        no++;
        st = (student*)realloc(st, sizeof(student)*(no));//动态增加一个结点
    }
    fin.close();
}

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值