要点:输入流
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中设置的位对应的流状态位,其他流状态为保持不变。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
只要有有效的输入,都会返回cin,除非到达文件尾。可以拼接
3.成员函数get(void),返回整形。不能拼接。
如果到了文件尾,返回一个iostream文件定义的常量EOF
getline()将换行符读出来,如果读了最大的字符数,下一个还不是换行符,会设置failbit
get()会把换行符留在输入流中。遇到空行的话,是设置failbit
istream& ignore(int = 1, int = EOF);读取指定数目的字符或者到达分隔符,将这些字符丢弃
read()读取指定数目的字节,并存储在指定的位置中。用来和wirite结合的,主要用于文件输入输出。
6.peek()返回输入流中的下一个字符,但是不会抽取出来。
7.gcount()返回最后一个非格式化抽取方法读取的字符数。
8.putback()将一个字符放到输入流中,下一个读取的第一个字符的位置。
9.关闭文件链接并不会删除流,而只是断开了流到文件的链接。缓冲区任然存在。
10.is_open()检测文件是否打开状态。这是C++11新增的,能够检测出试图以不合适的文件模式打开文件时失败。
int main(int argc, char* argv[])
argc为命令行中的参数个数,其中包括命令名本身。
argv变量为一个指针,它指向一个指向char的指针。可以看做一个指针数组。
argv[0]是命令,如果是通过vs运行,则是程序exe的绝对路径了。arge[1]之后就是参数了。
12.ios_base类定义了一个openmode类型,用于表示模式。
------------------------------------------------------
ios_base::out | 打开文件,以便写入
ios_base::ate | 打开文件,并将指针移到文件尾
ios_base::trunc | 如果文件存在,则截短文件
------------------------------------------------------
13.bitmask就是位掩码,具体实现,可能跟编译器有关,一般是int。其实就是用二进制的方式来看待每一位,每位都是一个独立的标记。
14.seekg()和seekp()函数提供文件的随机存取。
15.sstream头文件定义了istringstream和ostringstream类,能够使用istream和ostream方法来抽取字符串中的信息,并对要放入字符串中的信息进行格式化。