﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-Aaron学习笔记-文章分类-C++学习</title><link>http://www.cppblog.com/wangfeng2500/category/15012.html</link><description>少壮不努力，长大没饭吃！</description><language>zh-cn</language><lastBuildDate>Sat, 25 Sep 2010 17:59:17 GMT</lastBuildDate><pubDate>Sat, 25 Sep 2010 17:59:17 GMT</pubDate><ttl>60</ttl><item><title>cin.get( )与cin.getline( )的区别</title><link>http://www.cppblog.com/wangfeng2500/articles/127660.html</link><dc:creator>赞劲小子</dc:creator><author>赞劲小子</author><pubDate>Sat, 25 Sep 2010 12:56:00 GMT</pubDate><guid>http://www.cppblog.com/wangfeng2500/articles/127660.html</guid><wfw:comment>http://www.cppblog.com/wangfeng2500/comments/127660.html</wfw:comment><comments>http://www.cppblog.com/wangfeng2500/articles/127660.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wangfeng2500/comments/commentRss/127660.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wangfeng2500/services/trackbacks/127660.html</trackback:ping><description><![CDATA[<div style="FONT-SIZE: 10pt">cin.getline()和cin.get()都是对输入的面向行的读取,即一次读取整行而不是单个数字或字符,但是二者有一定的区别。<br>cin.get()每次读取一整行并把由Enter键生成的换行符留在输入队列中，比如：<br><br>#include &lt;iostream&gt;<br>using std::cin;<br>using std::cout;<br>const int SIZE = 15;<br>int main( ){<br>cout &lt;&lt; "Enter your name:";<br>char name[SIZE];<br>cin.get(name,SIZE);<br>cout &lt;&lt; "name:" &lt;&lt; name;<br>cout &lt;&lt; "\nEnter your address:";<br>char address[SIZE];<br>cin.get(address,SIZE);<br>cout &lt;&lt; "address:" &lt;&lt; address;<br>}<br><br>输出:<br>Enter your name:jimmyi shi<br>name:jimmyi shi<br>Enter your address:address:<br><br>在这个例子中，cin.get()将输入的名字读取到了name中，并将由Enter生成的换行符'/n'留在了输入队列（即输入缓冲区）中，因此下一次的cin.get()便在缓冲区中发现了'/n'并把它读取了，最后造成第二次的无法对地址的输入并读取。解决之道是在第一次调用完cin.get()以后再调用一次cin.get()把'/n'符给读取了，可以组合式地写为cin.get(name,SIZE).get();。<br><br><br>cin.getline()每次读取一整行并把由Enter键生成的换行符抛弃,如：<br><br>#include &lt;iostream&gt;<br>using std::cin;<br>using std::cout;<br>const int SIZE = 15;<br>int main( ){<br>cout &lt;&lt; "Enter your name:";<br>char name[SIZE];<br>cin.getline(name,SIZE);<br>cout &lt;&lt; "name:" &lt;&lt; name;<br>cout &lt;&lt; "/nEnter your address:";<br>char address[SIZE];<br>cin.get(address,SIZE);<br>cout &lt;&lt; "address:" &lt;&lt; address;<br>}<br><br>输出:<br>Enter your name:jimmyi shi<br>name:jimmyi shi<br>Enter your address:YN QJ<br>address:YN QJ<br><br>由于由Enter生成的换行符被抛弃了，所以不会影响下一次cin.get()对地址的读取。 </div>
<p style="FONT-SIZE: 10pt">&nbsp;</p>
<p style="FONT-SIZE: 10pt">两点注意:</p>
<p style="FONT-SIZE: 10pt">(1) 学会区别get()与getline();</p>
<p style="FONT-SIZE: 10pt">(2)换行符号是\n,而不是/n;</p>
<p style="FONT-SIZE: 10pt">一点体会:</p>
<p style="FONT-SIZE: 10pt">编程得多动手，多思考.</p>
<img src ="http://www.cppblog.com/wangfeng2500/aggbug/127660.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wangfeng2500/" target="_blank">赞劲小子</a> 2010-09-25 20:56 <a href="http://www.cppblog.com/wangfeng2500/articles/127660.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>