管理流和缓冲区的各种类:
ios:是基于ios_base的类,有一些一般流属性,比如是否可以读取,二进制还是文本流,还有一个指向steambuf的指针
ostream:从ios中派生的提供输出方法
istream:从ios中派生的提供输入方法
iostream:从ostream和istream中派生的类,提供输出和输入的方法
streambuf:为缓冲区提供内存,并提供了用于填充缓冲区,访问缓冲区内容,刷新缓冲区和管理缓冲区内存的方法
iostream自动创建的八个流对象:
cin,wcin,
cout,wcout,
cerr,wcerr,
clog,wclog
其中带w的处理wchar_t
重定向:就是可以在操作系统上把cin之类的输出流或者输入流改变,比如屏幕改为文件
cout:
①关于cout<<,可以跟
unsigned char,
signed char,
char,
short,
unsigned short,
int,
unsigned int,
long,
unsigned long,
long long,
unsigned long long,
float,
double,
long double
②为下列指针类型定义了插入运算符的函数
const signed char*
const unsigned char*
const char*
void *
③同样,可以输出数组名或者数组起始地址指针来输出字符串
④关于输出拼接的原理
cout<<"we have"<<a<<"sda";
这个是 cout<<"we have"显示字符串返回cout,
然后为cout<<a<<"sda";
然后cout<<a显示a返回cout
然后cout<<"sda";就完了
⑤简单的说明
cout.put('W');cout.put('W').put('P')用于输出单个字符
cout.write(要显示字符串的指针,要显示多少个字符);
const char_type* ,streamsize
当然好像可以cout.put(shasha).write(shasha)<<dsad;也是这两个语句返回cout 的表现
⑥关于endl,这是一个刷新缓冲区和再插入一个换行符
flush(cout)可以强制立即刷新cout缓冲区当然cout<<flush