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

    你可能感兴趣的文章
    poj1068Parencodings
    查看>>
    poj1182(带权并查集)
    查看>>
    POJ1182(带权并查集)
    查看>>
    Qt笔记——Qt初探、PyQt5和Qt5
    查看>>
    poj1190生日蛋糕
    查看>>
    POJ1218 HDU1337 ZOJ1350 UVALive2557 THE DRUNK JAILER
    查看>>
    poj1222 EXTENDED LIGHTS OUT(gauss)
    查看>>
    POJ1240 m叉树
    查看>>
    Poj1328--Radar Installation(区间选点)
    查看>>
    POJ1384Piggy-Bank(DP)
    查看>>
    POJ1417 True Liars —— 并查集 + DP
    查看>>
    Poj1459 Power Network 预流推进
    查看>>
    POJ1502(MPI Maelstrom)
    查看>>
    poj1568 Find the Winning Move[极大极小搜索+alpha-beta剪枝]
    查看>>
    poj1730 - Perfect Pth Powers(完全平方数)(水题)
    查看>>
    poj1753——Flip Game
    查看>>
    poj1936 假期计划第一水
    查看>>
    poj1958-汉诺四塔问题(三种方法)
    查看>>
    poj1988(并查集)
    查看>>
    POJ2007+几何+极角排序
    查看>>