C++中利用输入输入流进行一行输入

我们在使用istream类的对象cin进行一行输入的时候 往往遇到N多问题 

比如我这样做

char  buf [100]  ;

cin>>buf ;

cout<<buf ;

这时候如果我们输入了  ddd  ddd  那么只会输出 前三个ddd  ,从而达不到我们预期的效果   这是因为流的设计是以空字符来结束提取的 ,空格是空字符 所以后面三个d就没有提取到

buf中。 

istream提供了 get  和getline 两个函数进行行的读取 ,但是在对于文本文件的操作时候 ,我们无疑选用getline  ,这是从他们的提取特性来分析的 。

get在遇到分隔符的时候(默认是换行) 就会停止读取 ,并且以0结束 ,并且不会提取分隔符,分隔符仍保留在输入流里面,当下次再次调用cin.get()的时候那么就会直接返回

而不会读取任何数据,因为在读取开始就遇到了分隔符的缘故 。

getline则不同 他在get的基础上从输入流中删除了 分隔符 并且不保存在结果buffer中 ,从而可以使我们不断的读取一行数据  。

 

流也提供了许许多多的函数进行功能的测试

!stream  重载了!来测试流是否正确

eof    是否到达文件结尾

bad  是否错误

good是否正确  等等函数

clear 清空流 。。。。

 

read和wirte则可以对内存块进行读写 我们可以清晰的看到细节部分

 

 

 

转载于:https://www.cnblogs.com/mosatsu/archive/2011/12/30/2466827.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值