C++读写文件和流

标准库

C++从文件读取流和向文件写入流都需要用到 C++ 中一个标准库 fstream。
直接在开头时引入

#include<iostream>
#include <fstream>

using namespace std;

在这个标准库中有三个数据类型:
在这里插入图片描述
通常流程和Java一样,创建流,使用流,关闭流。

1.读文件

1 判断文件是否存在:

ifstream fin;
fin.open(filePath);
 if(!fin)
 {
  cout <<"no such file,please check the file name!\n";
  
 }else{
 	cout<<"存在这样的文件!"<<endl;
 } 
 fin.close();
    

2.判断是否为空
采取peek函数详解

ifstream fin;
fin.open(filePath);
 if(fin.peek() == EOF)
 {
  cout <<"没有内容"<<endl;
 }else{
 	cout<<"有内容哦。"<<endl;
 }
 fin.close();

3.读取全部内容
流的相互转换rdbuf()函数

ifstream fin;
fin.open(filePath);
ostringstream tmp;
tmp << fin.rdbuf();
string str = tmp.str();
cout<<str;	
fin.close();

别忘了引入头文件:#include < sstream >
rdbuf()rdbuf()可以实现一个流对象指向的内容用另一个流对象来输出详解

2.写文件

写入内容
和将内容输出到控制台上的方式一样。

 ofstream m_out("D:\\数据结构课设\\input.dat");
    if (m_out.is_open()){
//        cout<<"op"<<endl;//文件已经打开

        m_out<<"大二下学期成绩单:\n";
        m_out<<"班级中:\n";
        m_out<<"共有"<<n1<<"名学生:";
        for (int k = 0; k < student_number; ++k) {
            if (k!=0) m_out<<",";
            m_out<<students[k].name;
        }
        m_out<<"\n";

        m_out<<"每名学生共有"<<n2<<"门课程:";
        for (int l = 0; l < course_number; ++l) {
            if (l!=0) m_out<<",";
            m_out<<students[0].grades[l].Course_name;
        }

        m_out<<"\n                  具体情况为\n";
        for (int i = 0; i < student_number; ++i) {
            m_out<<"学号:"<<students[i].ID<<"  "<<"姓名:"<<students[i].name<<"   课程成绩为:\n";
            for (int j = 0; j < students[i].courseNumber; ++j) {
                m_out<<"        "<<students[i].grades[j].Course_name<<":"<<students[i].grades[j].grade<<"\n";
            }
        }
        m_out.close();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值