标准输入输出与错误的缓冲

来源:互联网 发布:1hhhhcom域名升级访问 编辑:程序博客网 时间:2024/05/21 06:36

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;}