欢迎光临散文网 会员登陆 & 注册

C++ 操作文本文件

2023-07-21 10:58 作者:清光照归途  | 我要投稿

C++把IO封装成

操作文本文件

需要包含头文件#include <fstream>

写文件(输出流)

步骤(四步)

  • 创建输出流对象

    ofstream fp ; //创建输出流对象

  • 打开文件,⚠打开模式缺省时如果文件不存在就创建,文件存在则截断内容

    fp.open("文件路径",打开模式);  //按照打开模式打开文件

文件路径注意事项:

目录文件可以使用相对路径或绝对路径

如果在windows平台下,因为' \ \'为转义字符,可以使用以下方法:

  • "D:\\data\\txt\\test.txt \"   使用' \\ \'替换' \ \'

  • "D:/data/txt/test.txt \"   使用' / \'替换' \ \'

  • R"(D:\data\txt\test.txt)" 使用原始字面量,C++11标准

打开模式作用ios::out缺省值,会截断文件内容(可理解为覆盖原有内容)ios::trunc截断文件内容(可理解为覆盖原有内容)ios::app不截断文件内容,在文件尾追加内容

❗打开文件可能不成功,需要判断,使用 输出流对象名.is_open() 判断,打开失败返回false;打开成功返回true。

打开文件失败原因:

  1. 目录不存在

  2. 磁盘空间已满

  3. 没有权限(Linux平台下常见)

  • 向文件中写入数据

  • 关闭文件

    输出流对象名.close();  //关闭文件

演示代码:

读文件(输入流)

步骤(四步)

  • 创建输入流对象

    ifstream fp; //创建输出流对象

  • 打开文件⚠文件不存在时打开文件失败

    fp.open(文件路径,打开模式);//打开模式缺省值为ios::in

打开文件失败原因:

  1. 目录不存在

  2. 文件不存在

  3. 没有权限(Linux平台下常见)

  • 从文件中读取数据(三种方法)

文本文件一般以行的方式组织数据

  1. getline()函数

getline(输入流对象名,缓冲区); 缓冲区需要提前定义


  1. 输入流getline()函数

输入流对象名.getline(缓冲区,最多读取的字节数)

⚠如果采用这种方式读取,一定要保证缓冲区足够大,超过缓冲区的部分读取不成功


  1. 使用>>运算符

输入流对象名 >> 缓冲区

>>运算符从文件中读取文本内容时会将空格、制表符、换行符、视为分隔符,读取并返回下一个非空白字符之前的字符,它将跳过所有连续的空白字符,直到遇到一个非空白字符。

例如:

春风得意马蹄疾,一日看尽长安花。
                 ——孟郊《登科后》

使用>>运算符读取会变成

春风得意马蹄疾,一日看尽长安花。

——孟郊《登科后》



解决>>运算符跳过空白字符的问题

  1. 使用字符串输出流操作符,它将整个文件内容读入字符串流(包括空白字符)

解决>>运算符跳过空白字符的问题



C++ 操作文本文件的评论 (共 条)

分享到微博请遵守国家法律