c++ primer复习(三)
1 istream、ostream类型,cin、cout、cerr是istream或ostream类型的具体的对象,<<和>>是操纵符
getline函数的参数是istream和string类型的两个引用形参
面向对象的标准库,3个头文件:iostream,fstream、sstream
对应的类型:istream,ostream,iostream;ifstream,ofstream,fstream;istringstream,ostringstream,stringstream
2 标准库类型不能复制或赋值
流对象不能存储在vector或其他容器中;形参或返回值不能使流对象,必须传递或返回流对象的指针或引用
3 流状态
标准IO库类型定义的类型:
strm::iostat 标准IO库类型内定义的类型,用于定义流状态
数据成员:
strm::badbit strm::iostat类型的值,用于指出被破坏的流
strm::failbit strm::iostat类型的值,用于指出失败的IO操作
strm::eofbit strm::iostat类型的值,用于指出流已经到达文件结束符
成员函数:
s.eof():是否设置eofbit
s.fail():是否设置failbit
s.bad():是否设置badbit
s.good():流是否有效
s.clear():清除流的所有状态值
s.clear(flag):
s.setstat(flag):
s.rdstat():
4 刷新缓冲区操纵符:endl(换行刷新),flush(刷新,不添加任何内容),ends(刷新,添加一个空字符),unitbuf/nounitbuf(每次执行完写操作都刷新)
5 tie函数
用于将输出流(实参)绑定到输入或输出流(调用对象)上,调用对象上的读写操作将刷新实参关联的缓冲区
tie(ostream &):绑定到输出流
ostream *tie():查询绑定的输出流
tie(0):解除绑定
6 文件IO:
ifstream infile(filepath,/*mode*/)
ofstream outfile(filepath,/*mode*/)mode可以为in,out,ate,app,trunc,binary
infile.open(filepath)如果文件流已经与某个文件绑定,则需要先close再open,注意close并不能改变流状态,clear才可以
outfile.open(filepath)
注意的是,IO标准库使用C风格字符串,可以调用string的c_str()成员将string对象转换为C风格字符串