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;
}
相关推荐
C^h9 小时前
c++ string
开发语言·c++
raindayinrain10 小时前
c++高性能--原子操作,无锁编程,操作顺序
开发语言·c++·性能优化
学逆向的10 小时前
C++ 合并命名空间
开发语言·c++·网络安全
Zhao-Jichao10 小时前
VS2026 打包 C++ 程序生成 EXE,借助 Installer Project 扩展工具
开发语言·c++
小徐不徐说11 小时前
C++ 接口与插件设计:从工厂注册到 Qt 动态插件
数据库·c++·qt·系统架构·程序设计
大都督会赢的11 小时前
C++第一节课
开发语言·c++
UIU11411 小时前
P1233 [ICPC 2001 Taejon R] 木棍加工
数据结构·c++·算法·动态规划
TMedical12 小时前
MedPlanning 截骨模拟矫形功能
c++·图像处理·人工智能·qt·健康医疗
qq_4069810312 小时前
共享变量一 关于extern与const
开发语言·c++
chari克里14 小时前
QT5.15.2 + msvc2022部署全流程说明(windows可联网环境)
开发语言·c++·qt