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

本文共 2287 字,大约阅读时间需要 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/

    你可能感兴趣的文章
    Nginx的可视化神器nginx-gui的下载配置和使用
    查看>>
    Nginx的是什么?干什么用的?
    查看>>
    Nginx访问控制_登陆权限的控制(http_auth_basic_module)
    查看>>
    nginx负载均衡器处理session共享的几种方法(转)
    查看>>
    nginx负载均衡的5种策略(转载)
    查看>>
    nginx负载均衡的五种算法
    查看>>
    Nginx运维与实战(二)-Https配置
    查看>>
    Nginx配置ssl实现https
    查看>>
    Nginx配置TCP代理指南
    查看>>
    Nginx配置——不记录指定文件类型日志
    查看>>
    Nginx配置代理解决本地html进行ajax请求接口跨域问题
    查看>>
    Nginx配置参数中文说明
    查看>>
    Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
    查看>>
    Nginx配置实例-负载均衡实例:平均访问多台服务器
    查看>>
    Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
    查看>>
    NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
    查看>>
    NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
    查看>>
    NIH发布包含10600张CT图像数据库 为AI算法测试铺路
    查看>>
    NIO ByteBuffer实现原理
    查看>>
    Nio ByteBuffer组件读写指针切换原理与常用方法
    查看>>