输入相关函数

1、cin>>          

(1)用法一:输入一个数字

#include 
using namespace std;
main ()
{
int a,b;
cin>>a>>b;
cout<<a+b<<endl;
}

输入:

2[回车]3[回车]

输出:

5

 

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

#include 
using namespace std;
main ()
{
char a[20];
cin>>a;
cout<<a<<endl;
}

输入:

jkljkljkl

输出:

 

jkljkljkl

 

输入:

jkljkl jkljkl       //遇空格结束

输出:

 

jkljkl

 

2、cin.get()

(1)用法一: cin.get(字符变量名)

    作用:可以用来接收字符

#include 
using namespace std;
main ()
{
char ch;
ch=cin.get();               //或者cin.get(ch);
cout<<ch<<endl;
}

输入:

jljkljkl

输出:

j

 

(2)用法二:cin.get(字符数组名,接收字符数目)

    作用:用来接收一行字符串,可以接收空格

#include 
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 
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(接收字符串的名称,接收个数5,结束字符)
当第三个参数省略时,系统默认为'\0'
如果将例子中cin.getline()改为cin.getline(m,5,'a');当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk

注意:上面这一指定结束字符的特性比较有用!

 

当用在多维数组中的时候,也可以用cin.getline(m[i],20)之类的用法:

#include
#include
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;< font="">}

请输入第1个字符串:

kskr1

请输入第2个字符串:

kskr2

请输入第3个字符串:

kskr3

输出m[0]的值:

kskr1

输出m[1]的值:

kskr2

输出m[2]的值:

kskr3

 

4、getline()    

  作用: 接受一个字符串,可以接收空格并输出,需包含“#include<stdio.h>”。

  注意:

  从stdin流中读字符,只相当于从标准输入缓冲区中去读取按顺序对应的一个字符(包含空格或回车)。

#include
#include
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流,是不一样的两个函数。

5、gets()      

以回车换行符为结束标志。

函数:

gets(字符指针)

头文件:

string.h(c中),c++不需包含此头文件

原型:

char *gets( char *buffer );

功能:

从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字符串。

返回值:

读入成功,返回与参数buffer相同的指针;读入过程中遇到EOF(End-of-File)或发生错误,返回NULL指针。所以在遇到返回值为NULL的情况,要用ferror或feof函数检查是发生错误还是遇到EOF。

注意:

本函数可以无限读取,不会判断上限,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。如果溢出,多出来的字符将被写入到堆栈中,这就覆盖了堆栈原先的内容,破坏一个或多个不相关变量的值,为了避免这种情况,我们可以用gets_s()来替换gets()。这个事实导致gets函数只适用于玩具程序。

区别:

gets(s)函数与scanf("%s:",&s)相似,但不完全相同,使用scanf("%s",&s);函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。

说明:

gets(s);函数中的变量s为一字符串。如果为单个字符,编译连接不会有错误,但运行后会出现”Null pointer asignment"的错误。

#include<iostream>using namespace std;int main(){char str[100];gets(str);cout<<str<<endl;return 0;}

 举例:

#include
#include
using namespace std;
main ()
{
char m[20];
gets(m);                       //不能写成m=gets();
cout<<m<<endl;
}

输入:

jkljkljkl

输出:

jkljkljkl

 

输入:

 

jkl jkl jkl

输出:

jkl jkl jkl

 

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

#include
#include
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;< font="">}

请输入第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()因为可以接收空格,所以不会产 生这个错误;

6、getchar()

作用:

接收一个字符,需包含“#include<stdio.h>”

说明:

 

当程序调用getchar时,程序就等着用户按键,用户输入的字符被存放在键盘缓冲区中,直到用户按回车为止(回车字符也放在缓冲区中)。
当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符,getchar函数的返回值是用户输入的字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕。如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键。
区别:

 

getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回,getch返回值是用户输入的ASCⅡ码,出错返回-1。输入的字符不会回显在屏幕上.getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行。
示例:

 

#include
#include
using namespace std;
main ()
{
char ch;
ch=getchar();                        //不能写成getchar(ch);
cout<<ch<<endl;
}

输入:

jkljkljkl

输出:

j

 

//getchar()是C语言的函数,C++也可以兼容,但是尽量不用或少用;

 

转载于:https://www.cnblogs.com/yedushusheng/p/5520485.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490679.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cpu开核_新锐龙让AMD重返巅峰,但逆袭的50年里这些CPU也不应忘记

AMD从成立至今无疑有着许多神奇的经历&#xff0c;比如其创始人一开始只能艰难地筹集到5000美元创业&#xff0c;到如今AMD成为一家年营业额达到65亿美元的公司&#xff0c;这位创始人创始人杰里.桑德斯也赋予了AMD永不放弃&#xff0c;永不投降的精神。曾有过无比辉煌的历史&a…

二隐层的神经网络实现MNIST数据集分类

二隐层的神经网络实现MNIST数据集分类 传统的人工神经网络包含三部分&#xff0c;输入层、隐藏层和输出层。对于一个神经网络模型的确定需要考虑以下几个方面&#xff1a; 隐藏层的层数以及各层的神经元数量各层激活函数的选择输入层输入数据的shape输出层神经元的数量以上神经…

Android之SurfaceView

SurfaceView也是继承了View&#xff0c;但是我们并不需要去实现它的draw方法来绘制自己&#xff0c;为什么呢&#xff1f; 因为它和View有一个很大的区别&#xff0c;View在UI线程去更新自己&#xff1b;而SurfaceView则在一个子线程中去更新自己&#xff1b;这也显示出了它的…

MATLAB画图设置线条透明度

plot1 plot(x,y); plot1.Color(4) 0.5; 调节Color(4)这个参数可以设置不同的透明度

日韩决裂,半导体谁最受伤?

来源&#xff1a; 半导体行业观察日本政府于7月1日公布&#xff0c;要加强对韩国的出口管理&#xff0c;7月4日发起了“氟化聚酰亚胺&#xff08;Polymide&#xff09;”、“EUV Resist&#xff08;光阻剂&#xff09;”、“氟化氢”三种半导体材料的出口限制。根据此次出口限制…

验证码随机生成

验证码随机生成 这里主要使用到的库是captcha库&#xff0c;下载的命令如下&#xff1a; pip install captcha 验证码随机生成代码&#xff0c;(python 版本&#xff1a;3.6 captcha 版本&#xff1a;0.3) from captcha.image import ImageCaptcha import numpy as np …

oracle的基本数据类型(转载)

数据类型是在设计表结构中需要定义的&#xff0c;选择适当的数据类型可以节省存储空间&#xff0c;提高运算效率。 Oracle数据类型主要包括 1.字符型 适合保存字符串类型的数据&#xff0c;如姓名、地址、简介等等。 如&#xff1a;char(2000),nchar(2000),varchar(4000),nvarc…

台式电脑麦克风_还有人买台式PC吗?这份新品推荐攻略值得收藏

【科技犬】新品一&#xff0c;联想发布新款天逸510S台式机联想现已推出天逸 510S 小型主机&#xff0c;搭载了英特尔最新的十代酷睿处理器 i5-10400&#xff0c;8GB 内存 512GB SSD 售价 3499 元。联想新款天逸 510S 将于 7 月 23 日开卖&#xff0c;适合企业办公用户使用。天…

MATLAB将两条曲线画在同一个图上

在MATLAB中将两条曲线画在同一个图上&#xff0c;如果直接采用下面的代码&#xff0c;那么画的第二个图会将第一个图覆盖 plot(x,p1,LineWidth,2); plot(x,p2,LineWidth,2); 正确的做法是在两条语句中间添加hold on; plot(x,p1,LineWidth,2); hold on; plot(x,p2,LineWidth,…

天基物联,毫瓦服务,商业航天撬动万亿市场

来源&#xff1a; 卫星与网络2019年8月17日12时11分&#xff0c;酒泉卫星发射中心&#xff0c;北京国电高科科技有限公司&#xff08;以下简称“国电高科”&#xff09;研制的天启沧州号&#xff08;又名“忻中一号”&#xff09;卫星由首次发射的捷龙一号商业火箭成功送入太空…

GitHub如何上传超过100MB的文件

GitHub如何上传超过100MB的文件 平时在GitHub上上传项目文件时&#xff0c;遇到比较大的文件&#xff0c;就会出现无法上传的情况&#xff1a; this exceeds GitHubs file size limit of 100.00 MB 解决方法如下&#xff1a; 在所要上传文件的目录下打开Git 首先&#xff0c;…

python的matplotlib生成colorbar

当有些画图的库不能生成colorbar时&#xff0c;需要手动生成colorbar&#xff1a;plt.colorbar(h)&#xff0c;h为图的句柄 举个例子&#xff0c;mne.viz.plot_topomap函数不支持显示colorbar&#xff0c;因此需要通过matplotlib库来先设置colorbar再显示 im, cn mne.viz.pl…

学好基础,展翅飞翔

1 学习的东东 学习java基础&#xff0c;java虚拟机知识&#xff0c;计算机操作系统&#xff0c;计算机网络&#xff0c;数据结构和算法&#xff0c;Android基础。 然后Android项目实践。 锻炼好身体&#xff0c;注意养身&#xff0c;毕竟是革命的本钱。 锻炼好情商&#xff0c;…

电脑出货量_Q3季度全球笔记本电脑出货量增长34%,惠普出货量首次超过联想

相关推荐将联想拯救者电竞手机Pro关机&#xff0c;取出卡托&#xff0c;卡托上并没有硅胶圈。手机后盖与内支撑通过胶固定&#xff0c;热风枪加热....我快闭嘴 发表于11-17 16:40 •48次 阅读 联想来酷B2411/H产品出发点其实很简单&#xff0c;这款产品并不是为那些追求新奇&am…

人的智商到底有多高?

图片来源&#xff1a;verywell.com来源&#xff1a;生物谷人的智商到底有多高&#xff1f;来自慕尼黑大学的Markus Buhner教授表示&#xff0c;其实日常生活中我们认为的很多事实实际上或许都是误解&#xff0c;这里&#xff0c;研究人员对8种陈词滥调的有效性证据进行了权衡分…

解决问题:Couldn't open file: data/coco.names

错误&#xff1a;Couldn’t open file: data/coco.names darknet GitHub&#xff1a;https://github.com/pjreddie/darknet YOLO官网&#xff1a;https://pjreddie.com/darknet/yolo/ 在进行yolo效果测试时&#xff0c;出现了该错误。通过如下命令下载darknet&#xff1a; git…

1766 装果子

传送门 #include<cstdio> #define N 110000 long long n,m,sum0,ans,max0; long long a[N]; void find(long long l,long long r) {if (l>r) return;long long mid(lr)/2,s0,k0;for (int i1;i<n;i){sa[i];if (s>mid) k,sa[i];}if (s) k;if (k>m) find(mid1,r…

linux系统下codeblocks控制台打印中文乱码

linux系统下codeblocks控制台打印中文乱码 在linux下安装codeblocks后&#xff0c;打印中文出现如下问题&#xff1a; #include <stdio.h> #include <stdlib.h>int main() {printf("你好&#xff0c;世界&#xff01;\n");return 0; } 解决办法 1、将…

db2时间格式化为时间到时分秒_快捷指令为 iPhone 手机照片添加时间水印

安卓手机用户&#xff0c;自带的相机一般都有花样繁多的水印功能&#xff0c;可以将当前使用的手机型号、日期时间、品牌等信息以水印形式添加到照片。而苹果手机自带的相机应用可设置的功能较少&#xff0c;不过&#xff0c;苹果系统自带的“快捷指令”应用扩展功能非常强&…

深度学习仍是视觉大数据领域的最好分析方法之一

在这个数据为王的时代&#xff0c;深度学习擅于发掘多维数据中错综复杂的关系。基于大数据的深度学习算法在计算机视觉、自然语言处理以及信息检索等多个领域不断刷新着记录。来源&#xff1a; AI科技评论AI 科技评论注&#xff1a;本文作者为中国科学院信息工程研究所张晓宇副…