C++文件操作

目录

文件类型

操作文件的类

文本读写

文件打开方式

读文件

写文件


文件类型

文本文件,文件以ASCII码形式存储在计算机中

二进制文件,文件以文本二进制形式存储在计算机中,用户无法读懂

操作文件的类

ofstream:写操作

ifstream:读操作

fstream:读写操作

文本读写

文件打开方式

ios::in:以读方式打开文件

ios::out:以写方式打开文件

ios::ate:文件打开后,文件指针定位到末尾,可读写(不截断文件)

ios::app:追加方式写文件

ios::trunc:如果文件存在先删除再创建,也就是覆写

ios::binary:二进制方式

读模式下如果文件不存在,会报错。写模式下如果文件不存在,会创建。

读文件

cpp 复制代码
#include<iostream>
#include<string>
#include<fstream>//读写文件的头文件
int main()
{
    std::ifstream ifs;//输入文件流对象
    ifs.open("test.txt",std::ios::in);
    if(!ifs.is_open())
    {
        std::cout<<"文件打开失败!"<<std::endl;
        return -1;
    }
    //第一种方式读
    // char buf[1024]={0};
    // while(ifs>>buf)
    // {
    //     std::cout<<buf<<std::endl;
    // }
    //第二种方式读
    // char buf[1024]={0};
    // while(ifs.getline(buf,sizeof(buf)))
    // {
    //     std::cout<<buf<<std::endl;
    // }
    //第三种方式读
    // std::string buf;
    // while(std::getline(ifs,buf))
    // {
    //     std::cout<<buf<<std::endl;
    // }
    //第四种方式读
    // char c;
    // while((c=ifs.get())!=EOF)
    // {
    //     std::cout<<c;
    // }
    ifs.close();
    //二进制方式读
    // ifs.open("test.txt", std::ios::in | std::ios::binary);
    
    // char buf[1024] = {0};
    // while (ifs.read(buf, sizeof(buf))) // 每次读取sizeof(buf)字节
    // {
    //     std::cout.write(buf, ifs.gcount()); // 输出实际读取的字节数
    // }
    // if (ifs.gcount() > 0) // 处理最后一次不足 sizeof(buf) 的读取
    // {
    //     std::cout.write(buf, ifs.gcount());
    // }
    // ifs.close();
    return 0;
}

写文件

cpp 复制代码
#include<iostream>
#include<string>
#include<fstream>//读写文件的头文件
int main()
{
    std::ofstream ofs;//输出文件流对象
    ofs.open("test.txt",std::ios::out|std::ios::app);//以写方式打开文件
    if(!ofs.is_open())//判断文件是否成功打开
    {
        std::cout<<"文件打开失败!"<<std::endl;
        return -1;
    }
    ofs<<"Hello, World!"<<std::endl;//向文件中写入数据
    ofs.close();//关闭文件
    ofs.open("test.txt",std::ios::out|std::ios::binary|std::ios::app);//以二进制写方式打开文件
    if(!ofs.is_open())//判断文件是否成功打开
    {
        std::cout<<"文件打开失败!"<<std::endl;
        return -1;
    }
    char buffer[]="我爱学习,我爱C++,我爱编程\n";
    //sizeof(buffer)会包含字符串末尾的'\0',若需忽略可改用strlen(buffer)
    ofs.write(buffer,sizeof(buffer));//以二进制方式向文件中写入数据
    ofs.close();//关闭文件
    return 0;
}
相关推荐
暮冬-  Gentle°2 小时前
C++中的命令模式实战
开发语言·c++·算法
㓗冽4 小时前
分解质因数-进阶题10
c++
图图的点云库5 小时前
高斯滤波实现算法
c++·算法·最小二乘法
CoderCodingNo6 小时前
【GESP】C++七级考试大纲知识点梳理, (1) 数学库常用函数
开发语言·c++
老鱼说AI6 小时前
CUDA架构与高性能程序设计:异构数据并行计算
开发语言·c++·人工智能·算法·架构·cuda
2301_793804698 小时前
C++中的适配器模式变体
开发语言·c++·算法
旖-旎9 小时前
二分查找(1)
c++·算法·二分查找·力扣·双指针
tankeven10 小时前
HJ132 小红走网格
c++·算法
2401_8578652311 小时前
C++模块接口设计
开发语言·c++·算法
add45a11 小时前
嵌入式C++低功耗设计
开发语言·c++·算法