c++中cin的基本使用方法

一、最主要的使用方法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

时间: 2024-08-26 23:18:28

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

C++中cin.clear()的用法

我们谈谈cin.clear的作用,第一次看到这东西,很多人以为就是清空cin里面的数据流,而实际上却与此相差很远,首先我们看看以下代码: #include <iostream>  using namespace std;  int main()   {              int a;              cin>>a;              cout<<cin.rdstate()<<endl;              if(cin.rds

在C#中如何使用资源的方法

总结一个在C#中如何使用资源的方法:一:使用本地文件1.将本地要加入的资源文本(视频,图片,文本或其它)加入项目,比如我们现在加入一个up.bmp的图片到项目中,且放在文件夹Resources下面,2.将up.bmp的生成操作设置为"嵌入的资源"3.读取资源:Assembly assembly = Assembly.GetEntryAssembly(); //不知为什么,上面的有时候不行,可以这样写: Assembly assembly = this.GetType().Assembl

Office word 2013中直接调用MathType的方法

Office word 2013中直接调用MathType的方法 | 浏览:4403 | 更新:2014-02-20 14:45 | 标签: word 使用Office word 2013的用户肯定早已注意到在编辑文档时MathType无法直接调用,但是点击文档中的公式时能够跳出MathType的公式编辑窗口.其实,这一问题可以通过简单设置让 MathType 集成到Office Word 2013中. 工具/原料 Office word 2013软件.MathType软件 方法步骤 安装Mat

解决VNC中tab键无效的方法

http://ubuntuforums.org/archive/index.php/t-1771058.html I accidentally discovered a fix for this while trying to solve a different problem.edit~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xmlfind the line <property name="&l

Linux中的gpio口使用方法

Linux中的IO使用方法 应该是新版本内核才有的方法.请参考:./Documentation/gpio.txt文件 提供的API:驱动需要包含 #include <linux/gpio.h> 判断一个IO是否合法:int gpio_is_valid(int number); 设置GPIO的方向,如果是输出同时设置电平:/* set as input or output, returning 0 or negative errno */int gpio_direction_input(unsi

js oop中的三种继承方法

JS OOP 中的三种继承方法: 很多读者关于js opp的继承比较模糊,本文总结了oop中的三种继承方法,以助于读者进行区分. <继承使用一个子类继承另一个父类,子类可以自动拥有父类的属性和方法.(继承的两方,发生在两个类之间)> 一.通过object实现继承 1:定义父类 function Parent(){} 2:定义子类 funtion Son(){} 3:通过原型给Object对象添加一个扩展方法. Object.prototype.customExtend = function(p

java中常用的包、类、以及包中常用的类、方法、属性-----io包

由于最近有需要,所以下面是我整理的在开发中常用的包.类.以及包中常用的类.方法.属性:有需要的看看 java中常用的包.类.以及包中常用的类.方法.属性 常用的包 java.io.*; java.util.*; java.lang.*; java.math.*; java.sql.*; java.text.*; java.awt.*; javax.swing.*;   包名 接口 类 方法 属性 java.io.*; java.io.Serializable实现序列化 java.io.Buffe

只显示前几条数据的sql语句写法 七种数据库中Select Top的使用方法

七种数据库中Select Top的使用方法 1. Oracle数据库 SELECT * FROM TABLENAME WHERE ROWNUM <= N 2. Infomix数据库 SELECT FIRST N * FROM TABLENAME 3. DB2数据库 SELECT * FROM (SELECT * ROW_NUMBER() OVER({ORDER BY COL1 DESC}) AS ROWNUM FROM TABLENAME) WHERE ROWNUM <= N 或者 SELEC

Struts2中Action接收参数的方法主要有以下三种:

Struts2中Action接收参数的方法主要有以下三种: 1.使用Action的属性接收参数(最原始的方式):     a.定义:在Action类中定义属性,创建get和set方法:     b.接收:通过属性接收参数,如:userName:     c.发送:使用属性名传递参数,如:user1!add?userName=jim: 2.使用DomainModel接收参数:     a.定义:定义Model类,在Action中定义Model类的对象(不需要new),创建该对象的get和set方法