C++中读写文件方法(fstream用法)

03-18 1580阅读

文章目录

  • 前言
  • 一、 打开文件方法
  • 二、读写方法
  • 三、读写文本示例
      • 1、文本文件操作示例:
      • 2、二进制文件读写示例:
      • 总结

        前言

        日常工作中肯定会用到文件读写操作,C++ STL中 fstream 是一种用于文件读写的流类,它可以方便地对文件进行输入输出操作。本文将详细介绍C++ fstream的使用方法,以及各种常用的函数方法和参数。

        C++中读写文件方法(fstream用法)
        (图片来源网络,侵删)

        一、 打开文件方法

        首先,要使用C++ fstream,需要包含头文件,然后创建一个fstream对象,指定要打开的文件名和打开模式。打开模式可以是以下几种:

        • ios::in:以输入模式打开文件,只能进行读操作。
        • ios::out:以输出模式打开文件,只能进行写操作。如果文件不存在,则创建一个新文件;如果文件已存在,则覆盖原有内容。
        • ios::app:以追加模式打开文件,只能进行写操作。如果文件不存在,则创建一个新文件;如果文件已存在,则在原有内容的末尾追加新内容。
        • ios::ate:以定位模式打开文件,可以进行读写操作。如果文件不存在,则创建一个新文件;如果文件已存在,则将文件指针定位到文件末尾。
        • ios::binary:以二进制模式打开文件,可以进行读写操作。这个模式会忽略换行符等特殊字符,按照字节流的方式处理文件。
        • ios::trunc:以截断模式打开文件,只能进行写操作。如果文件不存在,则创建一个新文件;如果文件已存在,则删除原有内容。

          以上模式可以用“|”符号组合使用,例如ios::in | ios::binary表示以输入二进制模式打开文件。

          例如,以下代码创建了一个fstream对象fs,并以输出追加模式打开了一个名为test.txt的文件:

          #include 
          using namespace std;
          int main()
          {
          	fstream fs;
          	fs.open("test.txt", ios::out | ios::app);
          	// 尾部追加的写操作
          	fs.close();
          	return 0;
          }
          

          注意,在使用完fstream对象后,需要调用close()函数关闭文件,释放资源。

          二、读写方法

          在打开文件后,可以使用各种流操作符和函数对文件进行读写操作。例如:

          • x;表示从文件读取一个整数赋值给变量x。
          • getline():从文件读取一行字符串,例如getline(fs, s);表示从文件读取一行字符串赋值给变量s。

            另外,还有一些常用的成员函数和标志位可以用来判断和控制fstream对象的状态。例如:

            • is_open():判断是否成功打开了文件,例如if (fs.is_open())表示如果成功打开了文件,则执行后续操作。
            • good():判断是否正常运行,没有发生错误或到达末尾,例如while (fs.good())表示当正常运行时,则循环执行后续操作。
            • eof():判断是否到达了文件末尾,例如while (!fs.eof())表示当没有到达末尾时,则循环执行后续操作。
            • fail():判断是否发生了非致命性错误(如类型不匹配),例如if (fs.fail())表示如果发生了非致命性错误,则执行后续操作。
            • bad():判断是否发生了致命性错误(如磁盘损坏),例如if (fs.bad())表示如果发生了致命性错误,则执行后续操作。
            • clear():清除错误标志位,恢复正常状态,例如fs.clear();表示清除错误标志位。
            • setstate():设置错误标志位为指定状态,例如fs.setstate(ios::failbit);表示设置错误标志位为非致命性错误状态。

              三、读写文本示例

              1、文本文件操作示例:

              #include 
              #include 
              using namespace std;
              int main()
              {
                  // 创建一个fstream对象,用于读写文件
                  fstream file;
                  // 以读写模式打开一个文本文件,如果不存在则创建
                  file.open("text.txt", ios::in | ios::out | ios::trunc);
                  // 判断文件是否打开成功
                  if (!file.is_open())
                  {
                      cout 
                      cout 
                  // 创建一个fstream对象,用于读写文件
                  fstream file;
                  // 以读写模式打开一个二进制文件,如果不存在则创建
                  file.open("binary.bin", ios::in | ios::out | ios::binary | ios::trunc);
                  // 判断文件是否打开成功
                  if (!file.is_open())
                  {
                      cout 
                ofstream myfile;
                myfile.open ("example.txt");
                myfile 
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]