博客
关于我
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/

    你可能感兴趣的文章
    python判断汉字数目
    查看>>
    python判断文件是空的,如果是空的,就删除
    查看>>
    python判断密码是否正确_python密码判断是否符合要求的方法
    查看>>
    python判断字符串包含中文_Python 判断字符串是否包含中文
    查看>>
    python删除第一行_Python 乱码指北:一行删掉根目录
    查看>>
    Python删除列表元素的三种方法
    查看>>
    python初步学习-python数据类型-集合(set)
    查看>>
    python列表生成字典_Python中将字典转换为列表的方法
    查看>>
    python列表对应元素合并为列表及判断一个列表是几维
    查看>>
    python列表去重复后按照顺序_从包含不可共元素的Python列表中删除重复元素,同时保留顺序?...
    查看>>
    python列表前几个_python之列表
    查看>>
    python列表元组
    查看>>
    Python列表/元组/字典和集合使用
    查看>>
    python列表 行列选择_python_pandas_dataframe_行列选择_切片操作
    查看>>
    python列表
    查看>>
    python列出当前目录、子目录和文件的脚本
    查看>>
    python+flask计算机毕业设计骨科门诊患者档案管理系统(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校体测管理系统的设计与实现(程序+开题+论文)
    查看>>
    Python切片对象和__getitem__
    查看>>
    python+flask计算机毕业设计高校体育竞赛成绩管理系统的设计与实现(程序+开题+论文)
    查看>>