学C++的时候,这几个输入函数弄的有点迷糊;这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行)_jkljkl-程序员宅基地

技术标签: C++  c++  

原为链接 

1、cin 
2、cin.get() 
3、cin.getline() 
4、getline() 
5、gets() 
6、getchar()

附:cin.ignore();cin.get()//跳过一个字符,例如不想要的回车,空格等字符

1、cin>>         

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

#include <iostream> 
using namespace std; 
main () 

int a,b; 
cin>>a>>b; 
cout<<a+b<<endl; 
}

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

注意:>> 是会过滤掉不可见字符(如 空格 回车,TAB 等) 
cin>>noskipws>>input[j];//不想略过空白字符,那就使用 noskipws 流控制

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

#include <iostream> 
using namespace std; 
main () 

char a[20]; 
cin>>a; 
cout<<a<<endl; 
}

输入: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; 
}

输入:jljkljkl 
输出:j

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

#include <iostream> 
using namespace std; 
main () 

char a[20]; 
cin.get(a,20); 
cout<<a<<endl; 
}

输入: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; 
}

输入: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个字符串: 
kskr1

请输入第2个字符串: 
kskr2

请输入第3个字符串: 
kskr3

输出m[0]的值:kskr1 
输出m[1]的值:kskr2 
输出m[2]的值:kskr3

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

#include<iostream> 
#include<string> 
using namespace std; 
main () 

string str; 
getline(cin,str); 
cout<<str<<endl; 
}

输入:jkljkljkl 
输出:jkljkljkl

输入:jkl jfksldfj jklsjfl 
输出:jkl jfksldfj jklsjfl

和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_37071435/article/details/114162215

智能推荐

谷歌浏览器网页翻译失效,无法翻译成中文,且谷歌翻译api报404问题_谷歌翻译用不了-程序员宅基地

文章浏览阅读1.3w次,点赞48次,收藏63次。但是自10月21日后谷歌 断开了谷歌翻译与在华运营的其它网络服务 IP 的关联,通过可访问的 translate.googleapis.com 域名获取 IP 不再可行,想要通过修改 hosts 恢复谷歌翻译功能,需要寻找其它可用 IP 地址。在9月底时就发现谷歌一键翻译不可用,原来是谷歌关停了翻译功能。但是机智的我们发现谷歌翻译api依旧可以使用,于是Ping一下 translate.googleapis.com 获取了ip,将新的ip 放入hosts文件重定向下依旧可以快乐的使用。_谷歌翻译用不了

msp430时钟/定时器收集的例程汇总_bcsctl1-程序员宅基地

文章浏览阅读756次。MSP430的时钟模块由DCOCTL, BCSCTL1, BCSCTL2, IE1, IFG1这五个寄存器来确定,具体的功能如下所示:(1)DCOCTL: DCO控制寄存器,地址为56H,初始值为60H// 7 6 5 4 3 2 1 0// DCO2 DCO1 DCO0 MOD4 MOD3 MOD2 _bcsctl1

计算机图像图形学相关好书推荐[转]_rafael c. gonzalez and richard e. woods, section 5-程序员宅基地

文章浏览阅读663次。一.数字图像处理相关书籍英文版:1. 《Digital Image Processing》 Rafael C. Gonzalez Richard E. Woods 电子工业出版社,Prentice Hall (此书有中文版)2. Gonzalez & Woods: Digital Image Processing 电子工业出版社_rafael c. gonzalez and richard e. woods, section 5.11 in digital image proce

并查集学习_pa[x]=find(x)-程序员宅基地

文章浏览阅读5.6k次,点赞12次,收藏6次。早上早早起来看Kruscal的MST算法,原来要用到不相交集合来实现。拿起《算法导论》看完不相交集合这章,顿然茅塞顿开,终于完成并查集的基础知识的学习。《算法导论》真是牛××  不相交集合有两种不同的实现,链表表示和带路径压缩的按秩合并策略。看到大家都比较喜欢用带路径压缩的按_pa[x]=find(x)

给button绑定click事件时,出现ajax请求时,一次点击两次提交的问题解决_js click 请求ajax-程序员宅基地

文章浏览阅读8.6k次。原文链接:http://blog.csdn.net/qingche456/article/details/62059433ajax请求时,一次点击两次提交的问题解决原代码&lt;script&gt; $(function(){ $('#jsStayBtn').on('click', function(){ $.ajax({ ..._js click 请求ajax

Qt加载cc.p12证书_qt 使用p12证书-程序员宅基地

文章浏览阅读1.2k次。以前做Qt的https通信时,在代码里加入适配置https的配置就可以了,现在的项目是要与Java服务器进行通信,而且使用java导出的p12的证书,研究了很久,终于在github上找到了方法._qt 使用p12证书

随便推点

Xposed模块开发入门-最基本的项目创建_virtualxposed官网-程序员宅基地

文章浏览阅读1.4k次。本人结合网络上的种种教程以及自己实践,记录下一个完整的基本Xposed模块项目的创建过程。 开发环境:Mac系统 AndroidStudio 3.2.1 gradle 3.2.1 VirtualXposed(无需Root的使用Xposed模块) Xposed、相关网站Xposed官方网站:https://api.xposed.info/reference/package..._virtualxposed官网

KITTI 数据集简介_kitti数据集介绍-程序员宅基地

文章浏览阅读5.4k次,点赞7次,收藏35次。KITTI 数据集介绍_kitti数据集介绍

详解如何修改IAR工程文件名_iar软件怎么改文件名-程序员宅基地

文章浏览阅读2.3k次。很多时候我们都为了图个方便,直接复制一份以前做过的项目,但是工程名却一直无法修改。我在网上寻找了很多,网上也给出很多方法,却一直不成功。不过现在终于解决这个问题了,在此为大家分享一下自己如何修改工程名。第一,将工程中后缀名为“dep,ewd,ewp,eww”的这四个文件直接重命名为自己想要的名字,如原工程名字是tim_delay,现在重命名为AD_change。第二,打开一个空的记事本,将后缀..._iar软件怎么改文件名

vue-qr 一款好用的二维码生成工具介绍及使用记录_vue qrcode-程序员宅基地

文章浏览阅读991次。需求:需要在web项目中为用户生成二维码,然后供用户扫描跳转进入小程序绑定。我们的项目使用Vue框架搭建的,经过调研最后选择用 vue-qr 这款插件来生成二维码,这里记录一下开发流程。特殊提示:Not support IE 不支持IE浏览器 (需要支持IE的请绕道走)npm:https://www.npmjs.com/package/vue-qrgit:https://github.com/Binaryify/vue-qr安装方式npm install vue-qr --sa..._vue qrcode

Apache 2.2无法启动:以一种访问权限不允许的方式做了一个访问套接字的尝试_安装阿帕奇报错:以一种访问权限-程序员宅基地

文章浏览阅读395次。2021年国庆节,在某个项目上忙了一天,晚上准备在远程服务器上发布,安装Apache之后无法启动,提示:以一种访问权限不允许的方式做了一个访问套接字的尝试网上搜索,再结合客户说服务器上有IIS的情况,判断是80端口被IIS占用了。将httpd配置文件中的监听端口改成其他的即可,比如88:Listen 88问题解决,Apache启动成功。..._安装阿帕奇报错:以一种访问权限

vue中使用swiper,左右箭头点击没有效果的解决方法_vue cursor: pointer 不生效-程序员宅基地

文章浏览阅读5.2k次。swiper作为一个开源的前端组件,主要用来做各种页面切换轮播的效果。在做左右切换效果时,发现点击左右箭头没有效果,原来是需要在左右箭头的页面标签上添加点击事件才行,代码如下,亲测可用<swiper ref="mySwiper" :options="swiperOptions"> <swiper-slide><div style="background-color: #5cb85c;height: 100%"><img src=_vue cursor: pointer 不生效