zoukankan      html  css  js  c++  java
  • C++ 输入输出流 文本文件 二进制文件读写

    文本文件/ASCII文件(能直接显示内容,费存储空间):文件中每一个字节中均以ASCII代码形式存放数据,即一个字节存放一个字符,这个文件就是ASCII文件或称字符文件。 

    二进制文件(不能显示内容,节省存储空间) :将内存中的数据存储形式不加转换的传送到磁盘文件,内存数据的映像文件,因为文件中的信息不是字符数据,而是字节中的二进制形式信息。

    两者操作都需要先打开文件,用完关闭文件。在打开时用ios::binary指定为以二进制形式传送和存储。

    二进制文件除了可以作为输入文件或者输出文件外,还可以既能输入又能输出的文件,这是和ASCII文件不同的地方、
    简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码。

        从上面可以看出文本文件基本上是定长编码的(也有非定长的编码如UTF-8)。而二进制文件可看成是变长编码的,因为是值编码嘛,多少个比特代表一个值,完全由你决定。大家可能对BMP文件比较熟悉,就拿它举例子吧,其头部是较为固定长度的文件头信息,前2字节用来记录文件为BMP格式,接下来的8个字节用来记录文件长度,再接下来的4字节用来记录bmp文件头的长度,bmp就是一个自定义的二进制文件,只是格式固定了。一般自己定义的二进制文件需要按自定义格式来识别内容。

    二.iostream类:C++用于输入输出的类库。

    在C++中,输入输出流被定义为类,C++的I/O库中的类称为流类,用流类定义的对象称为流对象。

    流中的内容可以是ASCII字符,二进制形式的数据,图形图像,数字音频视频或其他形式的信息。

    I/O类库中常用流类

    类名                  作用                                        在哪个头文件中声明

    ios               抽象基类                                         iostream

    istream        通用输入流和其他输入流的基类             iostream

    ostream       通用输出流和其他输出流的基类             iostream

    iostrean       通用输入输出流和人其他输入输出流的基类 iostream

    ifstream       输入文件流类                                    fstream

    ofstream      输出文件流类                                    fstream

    fstream        输入输出文件流类                              fstream

    istrstream    输入字符串流类                                 strstream

    ......................................

                  

    2 有关头文件

    iostream 包含对输入输出流进行操作所需的基本信息

    fstream 用于用户管理的文件的i/o操作

    strstream 用于字符串流的i/o

    stdiostream 用于混合使用C和C++的I/O机制时,例如想将C程序转变为C++程序

    iomanip 在使用格式化I/O时应包含此头文件

    iostream头文件中定义的类有ios,istream,ostream,iostream等

    iostream 包含了对输入输出的进行的基本操作所需信息,因此大多数C++程序都包括iostream

    iostream 中还定义了4中流对象 cin(键盘),cout(屏幕),cerr(屏幕),clog(屏幕) 定义形式:ostream cout(stdout)

    3 iostream头文件中重载运算符

    在istream 和ostream类中分别对>>和<<进行了重载,以便于能用它输入输出各种标准数据类型的数据:

    ostream operator <<(int); //用于向输出流插入一个int数据

    ostream operator <<(flaot); //用于向输出流插入一个float数据

    ostream operator <<(char); //用于向输出流插入一个char数据

    ostream operator <<(char *); //用于向输出流插入一个字符串数据

    注意 自定义类型重载>> <<,在类内声明为友元函数重载。

    4 cout.put('a');流成员函数put输出字符

    5 cin是iostream类的对象,它从标准输入设备(键盘)获取数据,程序中的变量通过流提取符>>从流中提取数据。流提取符>>从流中提取数据时通常跳过输入流中的空格 tab键 换行符等空白字符。注意:只有在输入完数据再按回车键后,改行数据才被送入键盘缓冲区,形成输入流,提取运算法>>才能从中提取数据。

    ch=cin.get();读入一个字符

    cin.get(ch);

    cin.get(字符指针/数组,字符个数n,终止字符)

    cin.getline(字符指针/数组,字符个数n,终止字符) 两个区别:cin.get函数从输入流读字符时,遇到终止字符时停止读取,指针不向后移动,仍然停在终止符之前的位置,在下一次读取时从终止符开始。后者会跳过终止符。

    前者得借助ignore函数跳过终止符,

    6 cin.eof(),cin.peek(),cin.outback(),cin,ignore(n,终止字符)

    7.

  • 相关阅读:
    servlet验证账号密码
    servlet概述
    JAVA WEB开发环境与搭建
    JavaScript简介
    css样式简介
    html简介
    西柚电子邮箱登录页面
    西南石油大学计科院主页
    PHP 简单分页 献给小白
    安装FastDFS
  • 原文地址:https://www.cnblogs.com/Yogurshine/p/3679085.html
Copyright © 2011-2022 走看看