一、最主要的使用方法cin>>

接收一个数字、字符、字符串。遇“空格”、“TAB”、“回车”都结束

比如:

<span style="font-size:18px;"><span style="font-size:18px;">#include <iostream>
using namespace std;
main ()
{
int a,b;
cin>>a>>b;
cout<<a+b<<endl;
}</span></span>

输入:5[回车]6[回车]

输出:11

(当中回车可替换成空格或者TAB键)

<span style="font-size:18px;"><span style="font-size:18px;">#include <iostream>
using namespace std;
main ()
{
char a[20];
cin>>a;
cout<<a<<endl;
}</span></span>

输入:kldjfllskjf

输出:kldjfllskjf



输入:jkljkl jkljkl //遇空格结束

输出:jkljkl

二、cin.get()

使用方法1: cin.get(字符变量名)能够用来接收字符

ch=cin.get(); 或者cin.get(ch);(两种形式等价)

<span style="font-size:18px;"><span style="font-size:18px;">#include <iostream>
using namespace std;
main ()
{
char ch;
ch=cin.get(); //或者cin.get(ch);
cout<<ch<<endl;
}</span></span>

输入:hglssf

输出:h

使用方法2:cin.get(字符数组名,接收字符数目)用来接收一行字符串,能够接收空格,enter键结束输入

<span style="font-size:18px;"><span style="font-size:18px;">#include <iostream>
using namespace std;
main ()
{
char a[20];
cin.get(a,20);
cout<<a<<endl;
}</span></span>

输入:jkl jkl jkl

输出:jkl jkl jkl



输入:abcdeabcdeabcdeabcdeabcde (输入25个字符)

输出:abcdeabcdeabcdeabcd (接收19个字符+1个'\0')

使用方法3: cin.get(字符数组名,接收字符数目,结束符)

读取一行字符串,遇结束符停止读入

<span style="font-size:18px;"><span style="font-size:18px;">#include <iostream>
using namespace std;
main ()
{
char a[20];
cin.get(a,20,'g');
cout<<a<<endl;
return 0;
}
</span></span>

输入:kjhkjlhgjlajdflj

输出:kjhkjlh

注意:当结束符为“ENTER”键时。即默觉得上述的使用方法2

可是两种情况下都不会丢弃结束符:

比如:

接收字符情况:

<span style="font-size:18px;"><span style="font-size:18px;">#include <iostream>
using namespace std;
int main()
{
  char c1, c2;
  cin.get(c1);
  cin.get(c2);
cout<<c1<<" "<<c2<<endl; // 打印两个字符
cout<<(int)c1<<" "<<(int)c2<<endl; // 打印这两个字符的ASCII值
return 0;
}
</span></span>

输入:

a[Enter]

输出:

a

97 10

【分析】会发现仅仅运行了一次从键盘输入,显然第一个字符变量取的’a',第二个变量取的是Enter(ASCII值为10),这是由于该函数不丢弃上次输入结束时的Enter字符,所以第一次输入结束时缓冲区中残留的是上次输入结束时的Enter字符。

接收字符串情况:

<span style="font-size:18px;"><span style="font-size:18px;">#include <iostream>
using namespace std;
int main ()
{
  char ch, a[20];
  cin.get(a, 5 , 'd');
  cin>>ch;
  cout<<a<<endl;
  cout<<(int)ch<<endl;
  return 0;
} </span></span>

输入:

12345[Enter]

输出:

1234

53

【分析】第一次输入超长,字符串按长度取了"1234",而’5′仍残留在缓冲区中。所以第二次输入字符没有从键盘读入,而是直接取了’5′。所以打印的ASCII值是53(’5′的ASCII值)

输入

12d45[Enter]

输出:

12

d

【分析】第二次输出为d,说明自己定义结束符时不丢弃缓冲区中的结束符

三、getline()的使用方法

使用方法1:cin.getline(数组名,长度,结束符)大体与
cin.get(数组名。长度。结束符)类似。

差别在于:

cin.get()当输入的字符串超长时,不会引起cin函数的错误,后面的cin操作会继续运行,仅仅是直接从缓冲区中取数据。可是cin.getline()当输入超长时。会引起cin函数的错误。后面的cin操作将不再运行。

#include<iostream>
usingnamespace std;
int main ()
{
char ch, a[20];
cin.getline(a, 5);
cin>>ch;
cout<<a<<endl;
cout<<(int)ch<<endl;
return0;
}

输入:

12345[Enter]

输出:

1234

-52

【分析】与cin.get()的样例比較会发现,这里的ch并没有读取缓冲区中的5,而是返回了-52。这里事实上cin>>ch语句没有运行。是由于cin出错了。

使用方法2:getline(cin,line),接收一行字符串输入并存入字符串line中,按回车结束。

<span style="font-size:18px;"><span style="font-size:18px;">#include<iostream>
#include<string>
using namespace std;
int main()
{
string line;
getline(cin,line);
cout<<line<<endl;
return 0;
}</span></span>

输入:liudandage nihaoa

输出:liudandage nihaoa

c++中cin的基本使用方法的更多相关文章

  1. C++中cin.get(),cin.getline(),cin>>,gets(),cin.clear()使用总结

    1.cin.get()  实质:类istream所定义对象cin的重载成员函数 用于读取单字符  istream& get(char&)    int get(void) 用于读取字符 ...

  2. (转)ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法

    早上同事用PL/SQL连接虚拟机中的Oracle数据库,发现又报了"ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务"错误,帮其解决后,发现很多人遇到过这样的问 ...

  3. 解析Jquery取得iframe中元素的几种方法

    iframe在复合文档中经常用到,利用jquery操作iframe可以大幅提高效率,这里收集一些基本操作,需要的朋友可以参考下   DOM方法:父窗口操作IFRAME:window.frames[&q ...

  4. 在html中添加script脚本的方法和注意事项

    在html中添加script脚本有两种方法,直接将javascript代码添加到html中与添加外部js文件,这两种方法都比较常用,大家可以根据自己需要自由选择 在html中添加<script& ...

  5. MVC中使用Entity Framework 基于方法的查询学习笔记 (二)

    解释,不解释: 紧接上文,我们在Visual Studio2012中看到系统为我们自动创建的视图(View)文件Index.cshtml中,开头有如下这句话: @model IEnumerable&l ...

  6. ORA-01652:无法通过128(在表空间temp中)扩展temp段 解决方法

    ORA-01652:无法通过128(在表空间temp中)扩展temp段 解决方法 (2016-10-21 16:49:53)   今天在做一个查询的时候,报了一个"ORA-01652无法通过 ...

  7. 转载:WinForm中播放声音的三种方法

    转载:WinForm中播放声音的三种方法 金刚 winForm 播放声音 本文是转载的文章.原文出处:http://blog.csdn.net/jijunwu/article/details/4753 ...

  8. win7中VS2010中安装CSS3.0问题解决方法

    win7中VS2010中安装CSS3.0问题解决方法   在安装Standards Update for VS2010 SP1后,VS2010中没有CSS3.0问题,以下是我的解决方法 1.首先去官网 ...

  9. OSG中找到特定节点的方法

    OSG中找到特定节点的方法 转自:http://38288890.blog.163.com/blog/static/19612845320072721549504/ 为了在OSG中找到需要的节点并对节 ...

随机推荐

  1. overflow:解决 div的高度塌陷问题

    高度塌陷是如何引起的? 解析: 当一个 div中所有的子  div都进行了浮动后,那么会出现该问题,那么解决方就是在父 div中 设置其  overflow:hidden;即可解决高度塌陷问题. 方式 ...

  2. T-SQL语句以及几个数据库引擎

    创建表 注意事项: A.自增长             B.数据库引擎, ISAM 是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据库被查询的次数要远大于更新的次数.因此,IS ...

  3. UltraEdit(UE)window破解方法

      安装UltraEdit(一路下一步,无难点)成功后,打开软件弹出如下使用模式提示信息.   关掉UltraEdit软件,同时  断本机网络.重新打开UltraEdit软件:   点击[输入许可证密 ...

  4. JS——缓动框架的问题

    1.opacity问题:IE678支持filter: alpha(opacity=50)取值1-100:小数位容易精度丢失,所i有统一json字符串设置为百进制,赋值时除以100 2.zIndex问题 ...

  5. ubuntu14.3安装phpmyadmin

    一.安装 sudo apt-get install phpmyadmin 二.软连接 cd /var/www/html/ sudo ln -s /usr/share/phpmyadmin phpmya ...

  6. Style在Android中的继承关系

    Style在Android中的继承关系 Android的Styles(样式)和Themes(主题)非常类似Web开发里的CSS,方便开发者将页面内容和布局呈现分开.Style和Theme在Androi ...

  7. js 图表转图片

    最近项目上有个需求,是将一些teechart做的图表转换成图片插入自动生成的PDF里,Teechart绘图和如何生成PDF这些这里就不说了,这个任务比较别扭的一点是,图表自动生成,且整个过程中页面不能 ...

  8. js-2018-11-01 关于break和continue语句

    1.label语句 语法:label: statement 加标签语句一般都要与for语句等循环语句配合使用. 2.break语句 立即退出循环,强制执行循环后面的语句. 3.continue语句 立 ...

  9. luogu P1775 古代人的难题_NOI导刊2010提高(02)(斐波纳契+数学)

    题意 已知x,y为整数,且满足以下两个条件: 1.x,y∈[1…k],且x,y,k∈Z 2.(x^2-xy-y^2)^2=1 给你一个整数k,求一组满足上述条件的x,y并且使得x^2+y^2的值最大. ...

  10. Django settings.py的一些配置

    官方文档:settings配置 静态文件配置链接 # 语言改为中文: LANGUAGE_CODE = "zh-hans" # 时区由UTC改为Asia/Shanghai,这样有关时 ...