《C++ Primer Plus(第六版)》(39)(第十七章 输入、输出和文件 笔记2)

要点:输入流

1.流状态

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

成员                                            |                     描述

enfbit                                          | 如果到文件尾,设置为1  

badbit                                         |   如果流被破坏,则设置为1;例如,文件读取错误

failbit                                           |   如果输入操作未能读取预期的字符或输出操作没有写入预期的字符,则设置为1

goodbit                                       |   另一种表示0的方法

good()                                         |   如果流可以使用(所有的位都被清除),则返回true

eof()                                             |   如果eofbit被设置,则返回true

bad()                                           |  如果badbit被设置,则返回true

fail()                                             |  如果badbit或failbit被设置,则返回true

rdstate()                                      |   返回流状态

exceptions()                               |   返回一个位掩码,支出哪些标记导致异常被引发

exceptions(isostate ex)           |   设置哪些状态将导致clear()引发异常,例如,如果ex是eofbit,则如果eofbit被设置,clear()将引发异常

clear(iostate s)                          |   将流状态设置为s,s的默认值为0(goodbit);如果(restate()& exceptions())!= 0,则引发异常basic_ios::failure

setstate(iostate s)                    |   调用clear(rdstate() | s)。这将设置与s中设置的位对应的流状态位,其他流状态为保持不变。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


2.成员函数get(char&)
只要有有效的输入,都会返回cin,除非到达文件尾。可以拼接

3.成员函数get(void),返回整形。不能拼接。
如果到了文件尾,返回一个iostream文件定义的常量EOF

4. 
getline()将换行符读出来,如果读了最大的字符数,下一个还不是换行符,会设置failbit
get()会把换行符留在输入流中。遇到空行的话,是设置failbit
istream& ignore(int = 1, int = EOF);读取指定数目的字符或者到达分隔符,将这些字符丢弃

5.
read()读取指定数目的字节,并存储在指定的位置中。用来和wirite结合的,主要用于文件输入输出。
read()不会在输入后加上空值字符。

6.peek()返回输入流中的下一个字符,但是不会抽取出来。

7.gcount()返回最后一个非格式化抽取方法读取的字符数。

8.putback()将一个字符放到输入流中,下一个读取的第一个字符的位置。

9.关闭文件链接并不会删除流,而只是断开了流到文件的链接。缓冲区任然存在。

10.is_open()检测文件是否打开状态。这是C++11新增的,能够检测出试图以不合适的文件模式打开文件时失败。
旧的方式不能检测出来。
if(fin.fail());
if(!fin.good());
if(!fin);
这几个都是旧的方式。

11.main函数
int main(int argc, char* argv[])
argc为命令行中的参数个数,其中包括命令名本身。
argv变量为一个指针,它指向一个指向char的指针。可以看做一个指针数组。
argv[0]是命令,如果是通过vs运行,则是程序exe的绝对路径了。arge[1]之后就是参数了。

12.ios_base类定义了一个openmode类型,用于表示模式。
------------------------------------------------------
常量                      |         含义
ios_base::in          |  打开文件,以便读取
ios_base::out        |  打开文件,以便写入
ios_base::ate        |  打开文件,并将指针移到文件尾
ios_base::app       |  追加到文件尾
ios_base::trunc     |   如果文件存在,则截短文件
ios_base::binary   |   二进制文件
------------------------------------------------------

13.bitmask就是位掩码,具体实现,可能跟编译器有关,一般是int。其实就是用二进制的方式来看待每一位,每位都是一个独立的标记。
平时用得很多,只是没这个说法而已。

14.seekg()和seekp()函数提供文件的随机存取。
tellg()和hellp()报告当前文件位置。
g是输入流的指针
p是输出流的指针

15.sstream头文件定义了istringstream和ostringstream类,能够使用istream和ostream方法来抽取字符串中的信息,并对要放入字符串中的信息进行格式化。











转载于:https://www.cnblogs.com/fablegame/p/6430225.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值