stdin行缓冲
stdout行缓冲
stderror无缓冲
从文件中读写是 全缓冲
read/write系统调用无缓冲
scanf 与 cin
遇见空格会停止从标准输入流中读取数据,空格之后的数据还在缓冲区。如果输入的数据中有空格,可考虑gets函数或getchar函数,对getchar函数来说返回-1代表读到eof,其余代表读到相应字符,我们可以当getchar读到\n时使它停止对这样就解决了遇见空格停止读取的事件发生了。
进程fork时缓冲区也会连带着一起被复制,原先没刷新的缓冲区的数据也会被复制。
关于cin与getline的返回值
cin也是由返回值的,它返回istream&,当需要bool判断时,istream会隐式转换成bool类型。getline的返回值就是istream。由该函数自动隐式转换explicit operator bool() const { if(state&(badbit|failbit) ) return 0; return (void *)this; }如果读入成功返回读入对象的地址失败返回false.
列子
int main()
{
string temp;
while(cin>>temp); 需要bool判断时自动调类型转换函数
return 0;
}