一、最主要的使用方法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. 第10篇 WINDOWS2003服务器 IIS上配置404页面的图文教程

    打开IIS 找到你的网站,点右键,选择属性 选择“自定义错误”标签页,找到404的那一项,点“编辑属性”按钮 (方案一)在“消息类型”里选“URL”,然后在下面的“URL”输入框里,填上你的404错误 ...

  2. 题解报告:hdu 1213 How Many Tables

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1213 Problem Description Today is Ignatius' birthday. ...

  3. Servlet到Servlet的请求转发与重定向的区别

    Servlet跳转到另一个Servlet中: request.getRequestDispatcher().forward();代表默认的是post方法,即在被跳转的Servlet的doPost()方 ...

  4. UNIX环境高级编程--7

    进程环境main函数:    C程序总是从main函数开始执行.main函数原型是:    int main(int argc, char *argv[]);    当内核执行C程序时(使用一个exe ...

  5. WinForm窗体项目 之 MySchool管理系统终极版

    学习WinForm窗体程序也有一段时间了,今天就来尝试着来一个项目热热身~ 在我们通常使用的MySchool管理中,不外乎这几种功能:增.删.改.查.改密码 在过去的C#中确实是挺简单的,但是在学习了 ...

  6. 【MySQL】二进制分发安装

    操作系统:Red Hat Enterprise Linux Server release 6.5 Mysql安装包:mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz ...

  7. acedinitget

    // 提示用户选择选择方式 acedInitGet(0, _T("W CP")); int nRs = acedGetKword(_T("\n请输入关键字确定选择方式[窗 ...

  8. 安装 jdk 和 IDE软件

    1.jdk的安装 通过官方网站获取JDK http://www.oracle.com 针对不同操作系统,下载不同的JDK版本 识别计算机的操作系统 下载完后进行安装,傻瓜式安装,下一步下一步即可.用j ...

  9. php第十四节课

    投票 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o ...

  10. [luogu2591 ZJOI2009] 函数

    传送门 Solution 画图找规律.. Code //By Menteur_Hxy #include <cstdio> #define min(a,b) ((a)>(b)?(b): ...