IO流(文件操作)

一 流的概念

目录

一 流的概念

一流的概念

         二fstream的使用

  1  作用

  2  c++文件操作

三常用的成员函数​​​​​​​

1   基本操作

2   put与get

3   二进制的形式读写文件

        三使用重载的>><<

         Lambaba表达式

定义并创建匿名函数对象

语法:

例子


一流的概念

1.流是一种抽象的概念,表示数据无结构化传递。

2.c++流 外界-->内存 内存-->外界

3.c++有I/O标准类库

二fstream的使用

一作用

fstream是c++中常用的文件操作类

二c++文件操作

1包含头文件#include 并且打开命名空间std或者std::fstream;

2通过fstream的对象操作文件

#include<iostream>
using namespace std;
#include<fstream>
using std::fstream;
int main()
{
    fstream file;//实例化对象
    return 0;
}

三常用的成员函数

1基本操作

open("文件路径",打开方式);
    //文件路径:绝对路径,相对路径(一般使用相对路径)
    //打开方式:只读,只写,二进制...

视角:以程序本身为视角

ios::in 读取数据 从文件===>程序 没有文件会报错

ios ::out 写入数据 从程序===>文件 没有文件会创建文件

#include<iostream>
using namespace std;
#include<fstream>

int main()
{
    //0.创建对象
    fstream file;
    //1.打开文件.
    file.open("test.txt",ios::out);
    //2.中间操作.
    file.is_open();//判断文件是否打开。返回bool类型
    file.eof();//判断是否到达文件末尾  返回bool类型
    //......
    //3.最后记得关闭文件.
    file.close();
    
    return 0;
}

2put与get


#incldue<iostream>
using namespace std;
#include<fstream>

int main()
{
    //put():    往文件里写入一个字符
    fstream file;
    file.open("write.txt";ios::out);//以out形式写入一个名叫write的文件
    file.put('S');
    char ch='A';
    file.put(ch);
    file.close();//记得在末尾关闭文件.
    
    file.open("test.txt",ios::in);//打开文件
    //get():从文件中读取字符
    
    char c=0;
    file.get(C);//将从文件里面读取出来的东西存到c里面.
    cout<<"c:  "<<c<<endl;
    c=file.get();
    cout<<"c:  "<<C<<endl;
    file.close();
    //get读文件的读取是一个一个字母读的,且是顺序读取的.
    
    return 0;
    
}

3二进制的形式读写文件

#include<iostream>
using namespace std;
#include<fstream>

int main()
{
    fstream file;
    //write(): 写入文件
    file,open("write.txt",ios::out);
    int hp=0x11223344;
    file.write((char*)&hp,sizeof(int));//write的格式
    file.close();
    
    //read():读取文件
    file.open("write.txt",ios::in);
    int num=0;
    file.read((char*)&hp,sizeof(int));
    file.close();
    
    cout<<hex<<"num=   "<<num<<endl;//hex表示为十六进制输出
   
    return 0;
}

三使用重载的>><<

#include<iostream>
using namespace std;
#include<fstream>

int main()
{
    fstream file;
    //<<:写入文件
    file.open("write.txt",ios::out);
    file<<"abc123!"<<endl;
    file<<"123"<<endl;
    int mp=80;
    file<<mp<<endl;
    file.close();
    
    //>>:读取文件
    file.open("write.txt",ios::in);
    char str[128];//因为一般char最大值为128.
    int num;
    int num1;
    file>>str>>num>>num1;
    file.close();//记得关闭文件.
    
    cout<<str<<endl<<num<<endl<<num1<<endl;
    return 0;
}

Lambaba表达式

定义并创建匿名函数对象

作用:简化编程工作

语法:

//简单模式
[](){}
[函数对象参数](操作符重载函数参数){函数体}

//标准模式
[](){}
[函数对象参数](操作符重载函数参数)mutable->返回值类型
{
    函数体
};

例子

#include<iostream>
using namespace std;
 void fun()
 {
     cout<<"这是一个函数"<<endl;
 }

int fun(int& n)//此处&是为了避免调用构造函数。
{
    return ++n;
}

int main()
{
//直接调用(一般为普通函数)
    func();
    //通过函数指针
    void(*pFun)()=func;
    Pfun();
    
    int n=0;
    auto pLam=[]()//当不知道它的类型的时候就用auto去试试就知道了
    {
        //n
        cout<<"这是一个Lambda表达式"<<endl;
    }
    
    //Lambaba表达式只能通过指针调用,因为这个是一个匿名函数,没有名字,就不可以直接调用了。
   
    PLam();
   
    int num = 0; 
    cout << endl << "num = " << num << endl;
    
    // 一 引用
    fun1(num); cout << "num = " << num << endl;
   
    // 二 值 
    fun2(num); cout << "num = " << num << endl;
    
    
    
    int num1 = 0;
    //一 引用
    auto PLam10=[&num]()
    {
        num++;
    };
    PLam10();
    cout<<endl<<"num= "<<num<<endl;
    
    auto PLam11=[&]()//一般这样子写就直接可以不用写调用几个值了
    {
        num++;
        num1=9;//调用两个
    }
    PLam11();
    cout<<"num=  "<<num<<"num1=  "<<num1<<endl;
    
    
    //二 值
    auto PLam20=[num]()
    {
        //num++
    };
    PLam20();
    cout<<endl<<"num=  "<<num<<endl;
    
    return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值