- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
cin,cout用法详解
在C中,输入输出要用printf和scanf,这是2个很麻烦的东西,因为在输入数据的同时还要说明数据的类型,如果输入数据较多,那就很麻烦了,所以我们的C++搞了两个更爽的东西cout和cin,来替换它们.首先我们先了解一下这两个东西的来处,它们是来自C++的一个类库叫 iostream.iostream是由istream(输入类)和ostream(输出类)派生.所以在iostream中就有了输入和输出的相关对象:1,cin,表示标准输入(standard input)的istream类对象.cin使我们可以从设备读取数据.2,cout,表示标准输出(standard output)的ostream类对象.cout使我们可以向设备输出或者写数据.3,cerr(暂时还没试过,先别理吧)暂时先介绍那么多,这里我主要想说的是cin.get()和cin.getline(),cin.clear(),cin.sync()等的用法.
首先看看cin.get(),它是一个读取单个字符的方法.
字符变量=cin.get();相当于cin.get(字符变量);
#include iostream using namespace std; int main() { ????????char cstr;???????? cstr=cin.get();??????????//读取单个字符,在屏幕输入,也相当于cin.get(cstr);???????? coutcstrendl;??//输出刚刚载入的单个字符??????? system(pause); }
运行程序后,一切正常:输入:a??? 输出:a
但当我们输入的不只一个英文字符时,那又会如何呢?输入:abcd???????? 输出:a
由此可知,它只能读取第一个字符,但如果我们把程序修改成:
int main() { ????????char cstr;??????? char bstr;???????? cstr=cin.get();??????? //读取单个字符,在屏幕输入????????bstr=cin.get();?????????? coutcstrbstrendl;??//输出刚刚载入的单个字符??????? system(pause); }
我们再输入:abcd??? 最后输出了:ab既然cin.get()是读取第一个字符,那bstr为什么不也是a呢?其实原理是这样的:在cin这个对象里,有一个储存字符的流,可以想象成缓冲区,但事实上是cin里封装的一个东西.当我们在程序上输入字符后,对象cin获得了我们输入的字符,例如获得abcd,然后再通过.get()把流里面的第一个字符去掉,赋给cstr,这时,cin里储存的流的数据为bcd,而cstr则获得了a.当我们再次运行bstr=cin.get();时,同理把cin里流的数据的b拿出来给了bstr,此后,cin里面的流的数据为cd,而bstr则为b,所以最后输出时,便能输出ab了.
还有个补充,究竟什么时候才输入数据呢?我们可以再通过上面的代码进行尝试,我们输入单个字母a,然后按回车,发现并没有输出数据,而是再等待一次输入数据,我们再输入字母b,按回车后便输出ab了.相信到这里,大家都应该明白了,因为当我们第一次输入a后,通过cstr=cin.get();使cin里的流没有数据,清空了.所以到第二次要再赋给bstr值时,它找不到数据,要重新再输入数据.由此来看可以知道,当cin里的流数据清空时,便需要重新输入才能赋值.而cin.get()还有个用法:
int main() { ???char cstr;?? char bstr;? ? cstr=cin.get();??????? //读取单个字符,在屏幕输入???cin.get();???bstr=cin.get();???? coutcstrbstrendl;??//输出刚刚载入的单个字符?? system(pause); }
程序中有3个cin.get(),所以我们尝试输入:abc.?? 发现输出了:ac由此能知道,当空回调cin.get();时,cin.get便自动在cin中的流数据中删除一个字母,起了一个删除作用.
对cin.get()有了一定了解之后,对cin.getline()的学习就可以更快了,原理是一致的,但是cin.getline()则是获取一整行文本.以下是cin.getline()原形:getline(char *line,int size,char=\n)第一个就是字符指针,第二个是字符长度,第三个1行的结束标识符.
int main() { ??char cstr[20
文档评论(0)