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

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值