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

    你可能感兴趣的文章
    Objective-C实现计算相似度算法(附完整源码)
    查看>>
    Objective-C实现读写蓝牙串口(附完整源码)
    查看>>
    Objective-C实现辗转相除法(附完整源码)
    查看>>
    Objective-C实现遗传算法(附完整源码)
    查看>>
    Objective-C实现醉汉随机行走问题(附完整源码)
    查看>>
    Objective-C实现醉汉随机行走问题(附完整源码)
    查看>>
    Objective-C实现重载[ ](附完整源码)
    查看>>
    Objective-C实现重载()(附完整源码)
    查看>>
    Objective-C实现链表(附完整源码)
    查看>>
    Objective-C实现链表交换节点算法(附完整源码)
    查看>>
    Objective-C实现队列(附完整源码)
    查看>>
    Objective-C实现阶乘递归factorialRecursive算法(附完整源码)
    查看>>
    Objective-C实现阿特巴希密算法(附完整源码)
    查看>>
    Objective-C实现随机图生成器算法(附完整源码)
    查看>>
    Objective-C实现随机数生成器(附完整源码)
    查看>>
    Objective-C实现隐藏任务栏(附完整源码)
    查看>>
    Objective-C实现雪花算法(附完整源码)
    查看>>
    Objective-C实现非丰富数之和算法(附完整源码)
    查看>>
    Objective-C实现高斯消元法(附完整源码)
    查看>>
    Objective-C实现高斯消除算法(附完整源码)
    查看>>