在学习C++的过程中,经常会遇到输入输出的问题,以下总结一下下面几个函数的用法:
1)、cin
2)、cin.get()
3)、cin.getline()
4)、getline()
5)、gets()

1、cin>>
  用法1:最基本,也是最常用的用法,输入一个数字:

  #include <iostream>using namespace std;main (){int a,b;cin>>a>>b;cout<<a+b<<endl;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

  输入:2[回车]3[回车]
  输出:5

  用法2:接受一个字符串,遇“空格”、“TAB”、“回车”都结束

   #include <iostream>using namespace std;main (){char a[20];cin>>a;cout<<a<<endl;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

  输入:jkljkljkl
  输出:jkljkljkl
  输入:jkljkl jkljkl //遇空格结束
  输出:jkljkl
  
2、cin.get()
  用法1: cin.get(字符变量名)可以用来接收字符

   #include <iostream>using namespace std;main (){char ch;ch=cin.get();   //或者cin.get(ch);cout<<ch<<endl;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

  输入:jljkljkl
  输出:j
  用法2:cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格

   #include <iostream>using namespace std;main (){char a[20];cin.get(a,20);cout<<a<<endl;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

  输入:jkl jkl jkl
  输出:jkl jkl jkl
  输入:abcdeabcdeabcdeabcdeabcde (输入25个字符)
  输出:abcdeabcdeabcdeabcd (接收19个字符+1个’\0’)
  用法3:cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目)的不足.
  
3、cin.getline() // 接受一个字符串,可以接收空格并输出

  #include <iostream>using namespace std;main (){char m[20];cin.getline(m,5);cout<<m<<endl;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

  输入:jkljkljkl
  输出:jklj
接受5个字符到m中,其中最后一个为’\0’,所以只看到4个字符输出;
  如果把5改成20:
  输入:jkljkljkl
  输出:jkljkljkl
  输入:jklf fjlsjf fjsdklf
  输出:jklf fjlsjf fjsdklf
  //延伸:
  //cin.getline()实际上有三个参数,cin.getline(接受字符串的看哦那间m,接受个数5,结束字符)
  //当第三个参数省略时,系统默认为’\0’
  //如果将例子中cin.getline()改为cin.getline(m,5,’a’);当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk
  当用在多维数组中的时候,也可以用cin.getline(m[i],20)之类的用法:

   #include<iostream>#include<string>using namespace std;          main (){char m[3][20];for(int i=0;i<3;i++){cout<<"\n请输入第"<<i+1<<"个字符串:"<<endl;cin.getline(m[i],20);}cout<<endl;for(int j=0;j<3;j++)cout<<"输出m["<<j<<"]的值:"<<m[j]<<endl;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

  请输入第1个字符串:
  kskr1
  请输入第2个字符串:
  kskr2
  请输入第3个字符串:
  kskr3
  输出m[0]的值:kskr1
  输出m[1]的值:kskr2
  输出m[2]的值:kskr3

4、getline() // 接受一个字符串,可以接收空格并输出,需包含“#include”

  #include<iostream>#include<string>using namespace std;main (){string str;getline(cin,str);cout<<str<<endl;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

  输入:jkljkljkl
  输出:jkljkljkl
  输入:jkl jfksldfj jklsjfl
  输出:jkl jfksldfj jklsjfl
  和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数

5、gets() // 接受一个字符串,可以接收空格并输出,需包含“#include”

  #include<iostream>#include<string>using namespace std;main (){char m[20];gets(m);     //不能写成m=gets();cout<<m<<endl;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

  输入:jkljkljkl
  输出:jkljkljkl
  输入:jkl jkl jkl
  输出:jkl jkl jkl
  类似cin.getline()里面的一个例子,gets()同样可以用在多维数组里面:

  #include<iostream>#include<string>using namespace std;main (){char m[3][20];for(int i=0;i<3;i++){cout<<"\n请输入第"<<i+1<<"个字符串:"<<endl;gets(m[i]);}cout<<endl;for(int j=0;j<3;j++)cout<<"输出m["<<j<<"]的值:"<<m[j]<<endl;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

  请输入第1个字符串:
  kskr1
  请输入第2个字符串:
  kskr2
  请输入第3个字符串:
  kskr3
  输出m[0]的值:kskr1
  输出m[1]的值:kskr2
  输出m[2]的值:kskr3
  自我感觉gets()和cin.getline()的用法很类似,只不过cin.getline()多一个参数罢了;
  这里顺带说明一下,对于本文中的这个kskr1,kskr2,kskr3的例子,对于cin>>也可以适用,原因是这里输入的没有空格,如果输入了空格,比如“ks kr jkl[回车]”那么cin就会已经接收到3个字符串,“ks,kr,jkl”;再如“kskr 1[回车]kskr 2[回车]”,那么则接收“kskr,1,kskr”;这不是我们所要的结果!而cin.getline()和gets()因为可以接收空格,所以不会产生这个错误。
  欢迎补充!

转载://C++中getline()、gets()等函数的用法相关推荐

  1. [转载] python中chr()和ord()函数的用法

    参考链接: Python的 chr() 在文章Python中raw_input()与input()的区别(http://blog.csdn.net/hk_john/article/details/77 ...

  2. python中split的用法取第二个分片_python中split()函数的用法

    函数:split() Python中有split()和os.path.split()两个函数,具体作用如下: split():拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(li ...

  3. mysql timestamp 差值_MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法(两个日期之间的差值)...

    MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法 在应用时,经常要使用这两个函数TIMESTAMPDIFF和TIMESTAMPADD. 一,TIMESTAMPDIFF 语法: ...

  4. matlab repmate,MATLAB中“repmat”与“cat”函数的用法

    MATLAB中"repmat"与"cat"函数的用法 1. repmat函数 >> z=repmat(5,2,3) z = 5 5 5 5 5 5 ...

  5. python items函数用法,Python中dictionary items()系列函数的用法实例

    本文实例讲述了Python中dictionary items()系列函数的用法,对Python程序设计有很好的参考借鉴价值.具体分析如下: 先来看一个示例: import html # availab ...

  6. python enumerate函数_关于python中enumerate和zip函数的用法及举例

    关于python中enumerate和zip函数的用法及举例 关于enumerate函数: enumerate函数可以同时返回列表或元组等可迭代对象的下标和内容,但实际上,enumerate函数实际返 ...

  7. C++中有关queue常用函数的用法及其注意要项

    11:C++中有关queue常用函数的用法及其注意要项 #include<bits/stdc++.h> using namespace std; int main(){queue < ...

  8. “约见”面试官系列之常见面试题之第七十六篇之vue-router中的路由钩子函数基本用法 (建议收藏)

    vue-router中的路由钩子函数基本用法 路由钩子函数分为三种类型如下: 第一种:全局钩子函数. router.beforeEach((to, from, next) => { consol ...

  9. python中字符串函数的用法_python中字符串内置函数的用法介绍(代码)

    本篇文章给大家带来的内容是关于python中字符串内置函数的用法介绍(代码) ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. capitalize() 首字母大写a='somewor ...

  10. linux之getcwd函数解析,Linux 中C语言getcwd()函数的用法

    Linux 中C语言getcwd()函数的用法 先来看该函数的声明: #include char *getcwd(char *buf,size_t size); 介绍: 参数说明:getcwd()会将 ...

最新文章

  1. MariaDB数据库介绍三、MHA(Master HA)实现主节点故障转移
  2. g77,g95,gfortran的关系
  3. 依赖注入有点_一文读懂Java控制反转(IOC)与依赖注入(DI)
  4. Pytorch初学实战(一):基于的CNN的Fashion MNIST图像分类
  5. 三月活动之“桃花朵朵开 求爱上上签”
  6. 要获取NAT之后的外网IP地址
  7. AcWing 852. spfa判断负环(spfa or bellman)
  8. android自定义View之曲线图
  9. 【图像评价】基于matlab GUI图像质量评价【含Matlab源码 1373期】
  10. usb启动计算机boss设置方法,技嘉主板bios设置usb启动(图文教程)
  11. oracle拆分分区语法详解大全_Oracle分区表详解
  12. 云编程那些事4 - 不造巴比伦塔
  13. python 与_Python爬取拉勾网python职位数据
  14. 如何定制下载SMAP产品
  15. 做了个网页版的 五笔跟打器: 玫枫跟打器
  16. yolov5 代码内容解析
  17. YOLOV7分割新手WIN10踩坑过程
  18. 递归函数——上台阶问题
  19. 5G大势之下,企业如何拿下更多投标项目?
  20. lrs_receive函数超时问题

热门文章

  1. mqtt调试助手_物联网入门,如何使用MQTT协议,连接Tlink物联网平台
  2. 运维开发学go还是python_运维工程师是要学python还是学go那?
  3. if condition 大于_条码打印软件之脚本编程的应用(if语句)
  4. jq添加新节点赋予class属性并获取该对象
  5. 原型、原型对象、构造函数、原型链理解
  6. 【数据算法】Java实现二叉树存储以及遍历
  7. mybatis04--Mapper动态代理实现
  8. Intellij IDEA -01 如何配置项目!
  9. 关键词匹配(Ac自动机模板题)
  10. 算法录 之 复杂度分析。