流类库和输入输出
流是一种抽象的概念,负责在数据的产生着和数据的使用者之间建立联系,并管理数据的流动。
整个流类体系是一个派生类体系,ios是抽象类,作为所有基本流类的基类。
cout 继承 ostream ,ostream继承ios;
cin 继承 istream ,istream继承ios;
iostream 继承 ostream和istream;
os类包含了一个缓冲区指针streambuf(是一个独立的类,作用是管理一个流的缓冲区)。
C++流类库定义4个全局流对象:cin,cout,cerr和clog。
cin是标准输入流对象,cout是标准输出流对象,cerr和clog是标准错误输出流,其中cin,cout和clog是带缓冲区,有streambuf类对象管理,cerr不带缓冲区,发生错误立即显示。
缓冲区三种情况:
1.遇到endl,会将缓冲区中的内容输出到屏幕
2.清空缓冲区时,会将缓冲区中的内容输出到屏幕
3.缓冲区满时,会将缓冲区中的内容输出到屏幕
文件的输入输出
文件输出过程:
1.创建文件输出流对象
2.打开文件
3.用输出重定向进行文件写入
4.关闭文件输出流对象
文件随机访问:
ifile.seeking(pos,ios::beg)//想对位置,字节访问
文件与对象:
文件应该在构造函数中打开,并创建对象;
在析构函数中保存和关闭文件,并撤销对象
输出格式:
* - boolalpha
* - dec
* - fixed
* - hex //以16进制输出
* - internal
* - left //左对齐
* - oct //居中
* - right //右对齐
* - scientific
* - showbase
* - showpoint
* - showpos
* - skipws
* - unitbuf
* - uppercase
* - adjustfield
* - basefield
* - floatfield
文件打开格式:
* - app
* - ate
* - binary
* - in //输入
* - out //输出
* - trunc
int main() { int a[]={15,23,36,45,59,67,78,82,91,100}; ofstream file("test",ios::out); for(int i=0;i<10;i++) { file<<a[i]; } file<<endl; file.close(); cout.width(10); cout.flags(ios::hex | ios::oct); cout << a[1]; return 0; }