博客
关于我
C++文件基础操作总结
阅读量:671 次
发布时间:2019-03-15

本文共 2278 字,大约阅读时间需要 7 分钟。

C++文件操作是设计图书管理系统的重要环节,本文将对文件操作进行详细总结。

流对象

C++通过三个类支持文件的输入输出:ofstream用于文件写入,ifstream用于文件读取,fstream支持读写操作。这三类分别基于OStream、IStream、IOStream继承而来。

  • ofstream: 用于向文件写入数据

  • ifstream: 用于从文件中读取数据

  • fstream: 同时支持读写操作

  • 打开文件的方式及模式组合详见下文。

    打开文件

    使用类成员函数`open()`打开文件,函数参数包括文件路径`filename`和打开模式`mode`。常见模式组合包括:

    ios::in: 只读模式
    ios::out: 只写模式
    ios::writestarεί�:Appending to file
    ios::truc: 线性显示模式(默认)

    可以使用或运算组合多个模式。

    示例代码:

    #include

    #include
    using namespace std; int main() { fstream file; file.open("text.txt", ios::in |ios::out); if (file.is_open()) { cout << "文件打开成功" << endl; } file.close(); return 0; }

    检查文件是否打开:调用流对象的`is_open()`,返回布尔值。

    关闭文件

    调用流对象的`close()`函数关闭文件。

    文本文件操作

    通过ΡΙО和输出流操作符<

    <和>
    >,实现对文本文件的读写。例如:

    示例代码:

    #include

    #include
    using namespace std; int main() { fstream file("text.txt", ios::in |ios::out); if (file.is_open()) { file << "I love you!\n"; } file.close(); return 0; }

    读取文本文件内容:使用`getline()`函数循环读取直到文件尾。同时检查是否到达文件末尾。

    p>检查是否到达文件末尾:

    if (file.eof()) break;

    读取多行内容注意事项:确保文件打开成功,避免未初始化的异常文件指针。

    二进制文件操作

    二进制文件操作通常使用`read()`和`write()`函数,适用于随机访问和大文件处理。

    示例代码:

    #include

    #include
    using namespace std; int main() { const char *filename = "text.bin"; char *buffer = new char[1024]; long size; fstream file(filename,ios::in |ios::binary |ios::ate); size = file.tellg(); file.seekg(0,ios::beg); file.read(buffer,size); file.close(); cout << "读取完毕"; delete[] buffer; return 0; }

    二进制读写函数特点:`read()`和`write()`处理二进制流操作,特别适用于随机访问。

    文件指针操作

    使用`tellg()`和`tellp()`获取流指针位置。使用`seekg()`和`seekp()`移动流指针位置。

    示例代码:

    #include

    #include
    using namespace std; int main() { const char *filename = "text.txt"; fstream file(filename,ios::in |ios::binary); long m; file.seekg(0,ios::end); m = file.tellg(); file.close(); cout << "文件大小为:" << m << "字节"; return 0; }

    文件结构操作常规注意事项:`telli_g`获取当前位置,`telli_p`获取写入位置。`seekg()`的两个原型形式:绝对位置],[相对位置+

    字符串分割

    使用<`

    `中的`strtok`函数进行字符串分割,常用于处理大量的CSV或类似文件。API定义:

    char *strtok(char *strToken, const char *strDelimit);

    例子:

    #include 
    #include
    char string[] = "A string,to,k恰tokensand some more tokens";char seps[] = " ,\t\n";char *token;int main() { token = strtok(string, seps); // C4996: 已过时, 建议使用strtok_s while (token != NULL) { printf(" %s\n", token); token = strtok(NULL, seps); }}

    总之,掌握了文件操作流的使用方法,可以有效管理和操作图书管理系统的文件需求,确保程序运行稳定。理解并应用文件读写方法,有助于提升代码质量和系统性能。

    转载地址:http://ydwqz.baihongyu.com/

    你可能感兴趣的文章
    pandas整合多份csv文件
    查看>>
    pandas某一列转数组list
    查看>>
    Pandas模块,我觉得掌握这些就够用了!
    查看>>
    Pandas玩转文本处理!
    查看>>
    pandas的to_sql方法中使用if_exists=‘replace‘
    查看>>
    pandas读取parquet报错
    查看>>
    Pandas进阶大神!从0到100你只差这篇文章!
    查看>>
    spring5-介绍Spring框架
    查看>>
    Pandas:将一列与数据帧的所有其他列进行比较
    查看>>
    PandoraFMS 监控软件 SQL注入漏洞复现
    查看>>
    PandoraFMS 监控软件 任意文件上传漏洞复现
    查看>>
    Parallel.ForEach的基础使用
    查看>>
    parallels desktop for mac安装虚拟机 之parallelsdesktop密钥 以及 parallels desktop安装win10的办公推荐可以提高办公效率...
    查看>>
    paramiko模块
    查看>>
    param[:]=param-lr*param.grad/batch_size的理解
    查看>>
    Spring Cloud 之注册中心 EurekaServerAutoConfiguration源码分析
    查看>>
    ParseChat应用源码ios版
    查看>>
    Part 2异常和错误
    查看>>
    Spring @Async执行异步方法的简单使用
    查看>>
    PAT (Basic Level) Practise - 写出这个数
    查看>>