cin、cin.get()、cin.getline()、getline()、gets()函数的用法


1、cin>>          

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

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

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

用法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; 
void main(void) 

string st ; 
cout<<"Input st:"; 
getline(cin,st); 
cout<<st<<endl; 


上面这段代码,如果输入abc,那么需要按两次回车键才能显示abc(在VC6中),因为getline有三个参数,第三个参数是字符串的结束符,也就是当getline遇到这个结束符时,就不在接受输入了,比如写成 getline(cin,st,'s'); 即使输入的是abcsabc 那么也只会显示 abc ,因此对于上面出现的情况,有人说getline默认情况下以回车('\n')作为结束符,第一次按回车表示字符串结束,第二次按回车才开始输出。

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

#include<iostream>
#include<string>
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<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个字符串:
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<string>”

#include<iostream>
#include<string>
using namespace std;
main ()
{
char ch;
ch=getchar();                      
cout<<ch<<endl;
}

输入:jkljkljkl
输出:j

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

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

相关文章

BootCDNApi使用记录

通过API获取BootCDN所加速的所有前端开源库的基本信息和文件列表 API 将一下API链接中的.min字样去掉后,获取到的JSON格式的返回信息是经过良好的格式化的,便于查看. 所有开源库简要信息列表 https://api.bootcdn.cn/libraries.min.json 该列表是一个json数组,数组中的每一个条…

spring防止爬虫_Spring安全:防止暴力攻击

spring防止爬虫Spring Security可以为您做很多事情。 帐户被封锁&#xff0c;密码盐。 但是蛮力阻断剂呢&#xff1f; 那是你必须自己做的。 幸运的是&#xff0c;Spring是一个非常灵活的框架&#xff0c;因此对其进行配置并不是什么大问题。 让我向您展示一些如何针对Grai…

php 输出读取结果集,php获取数据库结果集实例详解

下面小编就为大家带来一篇php获取数据库结果集方法(推荐)。小编觉得挺不错的&#xff0c;现在就分享给大家&#xff0c;也给大家做个参考。一起跟随小编过来看看吧PHP经常要访问数据库提前数据库里面的数据&#xff0c;那么该怎么样去提前数据呢&#xff1f;提取数据库代码如下…

c/c++ 模板与STL小例子系列一 自建Array数组

c/c 模板与STL小例子系列 自建Array数组 自建的Array数组&#xff0c;提供如下对外接口 方法功能描述Array()无参数构造方法&#xff0c;构造元素个数为模板参数个的数组Array(int length)有参数构造方法&#xff0c;构造元素个数为参数length个的数组~Array()析构函数int size…

php如何抓取一行的内容,提取一行作为对象 - PHP 7 中文文档

(PHP 4, PHP 5, PHP 7)pg_fetch_object – 提取一行作为对象说明pg_fetch_object( resource $result[, int $row[, int $result_type]] ) : objectpg_fetch_object() 返回与所提取行的属性相一致的一个对象。如果出错或者没有更多行可供提取时则返回 FALSE。pg_fetch_object() …

Spring Cloud Zuul支持–配置超时

Spring Cloud为Netflix Zuul提供了支持 -Netflix Zuul是用于创建具有路由和过滤功能的边缘服务的工具包。 在Spring Cloud站点上非常全面地记录了Zuul代理支持。 我的目标是关注与代理服务处理超时有关的一小部分属性。 目标服务和网关 为了更好地研究超时&#xff0c;我创建…

NYOJ 113

字符串替换 时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB 难度&#xff1a;2描述 编写一个程序实现将字符串中的所有"you"替换成"we" 输入输入包含多行数据 每行数据是一个字符串&#xff0c;长度不超过1000 数据以EOF结束输出对于输入的…

java 多表格处理工具,表单工具十一大标准

现在市场上的表单工具百家争鸣&#xff0c;鱼目混杂。到底什么时候能解决客户问题表单&#xff0c;今天我们主要从客户角度来真正表单工具的十大标准&#xff1a;1) 零编码制作表单业务人员通过高效灵活的设计器&#xff0c;可以自由定制符合自己业务逻辑的表单&#xff0c;同时…

关于python的单线程和多线程

单线程 比如两件事&#xff0c;要相继执行&#xff0c;而不是一起执行 学习一下单线程和多线程的问题from time import ctime,sleep 单线程 print(单线程开始&#xff1a;) def music_single(name):for i in range(2):print(i was listening to music %s. %s %(name,ctime()))s…

C语言itoa()函数和atoi()函数详解(整数转字符C实现)

C语言提供了几个标准库函数&#xff0c;可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。1.int/float to string/array: C语言提供了几个标准库函数&#xff0c;可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串&#xff0c;下面列举了各函数的方法及其说…

exo文件_您在eXo平台上的第一个Juzu Portlet

exo文件菊珠是佛教的佛珠。 一句话&#xff0c;我相信您已经学到了什么&#xff0c;印象深刻吗&#xff1f; 好吧&#xff0c;我在这里不谈论佛教。 Juzu还是一个用于快速开发Portlet&#xff08;以及即将推出的独立应用程序&#xff09;的新框架。 您可以在Juzu网站上找到所需…

matlab指定间隔符,在matlab中为.dat文件指定小数分隔符[复制]

您必须以文本形式读取数据(使用textscan,textread,dlmread,etc.)并转换为数字.假设您已将数据读入单元格数组,其中包含单元格中的每个数字&#xff1a;>> C {1,2345,3,14159,2,7183,1,4142,0,7071}C 1,2345 3,14159 2,7183 1,4142 0,7071使用strrep和str2double如下&…

volatile、static

谈到 volatile、static 就必须说多线程。 1、一个线程在开始执行的时候&#xff0c;会开启一片自己的工作内存&#xff08;自己线程私有&#xff09;&#xff0c;同时将主内存中的数据复制到自己 的工作内存&#xff0c;从此读写数据都是自己的工作内存的数据&#xff0c;&…

最大流EK算法

最大流模板&#xff1a; #include <iostream> #include <queue> //#include <conio.h> using namespace std; #define arraysize 201 int maxData 0x7fffffff; int capacity[arraysize][arraysize]; //记录残留网络的容量 int flow[arraysize]; …

将自定义功能添加到Spring数据存储库

Spring Data非常方便&#xff0c;并且避免了样板代码&#xff0c;从而加快了开发速度。 但是&#xff0c;在某些情况下&#xff0c;注释查询不足以实现您可能想要实现的自定义功能。 因此&#xff0c;spring数据允许我们向Spring数据存储库添加自定义方法。 我将使用前一篇博客…

mysql concat的使用

想要在一个id前都加个0,如果处理呢? mysql concat的使用 update a_data set idCONCAT(0, id) where data_packet_id in (2774, 2775, 2776);转载于:https://www.cnblogs.com/djwhome/p/9554086.html

biweb wms门户网站php开源建站系统 v5.8.3,BIWEB WMS PHP开源企业建站系统 v5.8.5

BIWEB WMS 企业版升级啦&#xff01;&#xff01;&#xff01;现推出中英文双语版&#xff0c;并可以完美支持中文繁简转换。该系统需要PHP5以上版本&#xff0c;并要开启PDO和PDO_MYSQL组件&#xff0c;否则无法使用。BIWEB V5.8.5启用了新的底层框架&#xff0c;共享内存缓存…

Edmonds_Karp 算法 (转)

找了好久终于在这个牛这里找到为什么反向边要加回流量的原因了&#xff0c; 因为是初学教程&#xff0c;所以我会尽量避免繁杂的数学公式和证明。也尽量给出了较为完整的代码。 本文的目标群体是网络流的初学者&#xff0c;尤其是看了各种NB的教程也没看懂怎么求最大流的小盆友…

Grid表格的js触发事件

没怎么接触过Grid插件&#xff1b; 解决的问题是&#xff1a;点击Grid表行里的内容触发js方法弹出模态框&#xff0c;用以显示选中内容的详细信息。 思路&#xff1a;给准备要触发的列加上一个css属性&#xff0c;通过这个css属性来获取元素并触发js方法。 1 function flowGrid…

php 合并数组成父子关系,php - 将电子表格解析为PHP数组并返回具有父子关系的嵌套MLM表 - SO中文参考 - www.soinside.com...

这里有一些非递归代码可以让你开始(如果你还没有解决它)&#xff0c;它将根据从电子表格加载的$rows数组构建一个树。这个想法是每个节点都有一个名称和一个子数组。所以代码只是在步骤1中为每个人(父和子)创建一个节点&#xff0c;然后从下到上填写步骤2中的链接。代码不健壮&…