C++基础知识(3):文件操作

        程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放。通过文件可以保存数据,实现数据的持久化。

1.IO流
  • istream 是用于输入的流类,cin 就是该类的对象。
  • ostream 是用于输出的流类,cout 就是该类的对象。
  • ifstream 是用于从文件读取数据的类。
  • ofstream 是用于向文件写入数据的类。
  • iostream 是既能用于输入,又能用于输出的类。
  • fstream 是既能从文件读取数据,又能向文件写入数据的类。
  • istrstream 输入字符串类
  • ostrstream 输出字符串类
  • strstream 输入输出字符串流类

(1)标准输入/输出流

C++的输入/输出流库(iostream)中定义了4个标准流对象:cin(标准输入流-键盘),cout(标准输出流-屏幕),cerr(标准错误流-屏幕),clog(标准错误流-屏幕)

  • cerr 不使用缓冲区,直接向显示器输出信息;而输出到 clog 中的信息会先被存放到缓冲区,缓冲区满或者刷新时才输出到屏幕。
  • cout 是 ostream 类的对象,ostream 类的无参构造函数和复制构造函数都是私有的,所以无法定义 ostream 类的对象。
  • 使用>>提取数据时,系统会跳过空格,制表符,换行符等空白字符。所以一组变量输入值时,可用这些隔开。
  • 输入字符串,也是跳过空白字符,会在串尾加上字符串结束标志\0。

(2)输入流中的成员函数

  • get函数:cin.get(),cin.get(ch)(成功返回非0值,否则返回0),cin.get(字符数组(或字符指针),字符个数n,终止字符)
  • getline函数:cin.getline(字符数组(或字符指针),字符个数n,终止标志字符),读取字符知道终止字符或者读取n-1个字符,赋值给指定字符数组(或字符指针)
  • cin.peek() 不会跳过输入流中的空格、回车符。在输入流已经结束的情况下,cin.peek() 返回 EOF。
  • ignore(int n =1, int delim = EOF)
  • putback(char c),可以将一个字符插入输入流的最前面。

(3)输出流对象

  • 插入endl-输出所有数据,插入换行符,清空缓冲区
  • \n-输出换行,不清空缓冲区
  • cout.put(参数) 输出单个字符(可以时字符也可以是ASCII码)
2.文件操作

C++ 标准类库中有三个类可以用于文件操作,它们统称为文件流类。这三个类是:

  • ifstream:输入流类,用于从文件中读取数据。
  • ofstream:输出流类,用于向文件中写人数据。
  • fstream:输入/输出流类,既可用于从文件中读取数据,又可用于 向文件中写人数据。

(1)打开文件

模式标记

适用对象

作用

ios::in

ifstream

fstream

打开文件用于读取数据。如果文件不存在,则打开出错。

ios::out

ofstream

fstream

打开文件用于写入数据。如果文件不存在,则新建该文件;如 果文件原来就存在,则打开时清除原来的内容。

ios::app

ofstream

fstream

打开文件,用于在其尾部添加数据。如果文件不存在,则新建该文件。

ios::ate

ifstream

打开一个已有的文件,并将文件读指针指向文件末尾(读写指 的概念后面解释)。如果文件不存在,则打开出错。

ios:: trunc

ofstream

单独使用时与 ios:: out 相同。

ios::binary

ifstream

ofstream

fstream

以二进制方式打开文件。若不指定此模式,则以文本模式打开。

(2)移动和获取文件读写指针

  • ifstream 类和 fstream 类有 seekg 成员函数,可以设置文件读指针的位置;
  • ofstream 类和 fstream 类有 seekp 成员函数,可以设置文件写指针的位置。
  • ifstream 类和 fstream 类还有 tellg 成员函数,能够返回文件读指针的位置;
  • ofstream 类和 fstream 类还有 tellp 成员函数,能够返回文件写指针的位置。

猜你喜欢

转载自blog.csdn.net/weixin_55238862/article/details/135324487