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

学C++的时候,这几个输入函数弄的有点迷糊;这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行)转载请保留作者信息;
1、cin
1、cin.get()
2、cin.getline()
3、getline()
4、gets()
5、getchar()

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;
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()        // 接受一个字符串,可以接收空格并输出,需包含“#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();                        //不能写成getchar(ch);
cout<<ch<<endl;
}

输入:jkljkljkl
输出:j

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

有什么建议可以一起探讨,我的email是kskr@qq.com

原文地址:http://hi.baidu.com/kskr/blog/item/cb00cc3deadf45c49f3d6279.html

转载于:https://www.cnblogs.com/wintergrass/archive/2011/07/30/2122215.html

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

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

相关文章

LeetCode—295. 数据流的中位数(困难)

295. 数据流的中位数&#xff08;困难&#xff09; 题目描述&#xff1a; 中位数是有序列表中间的数。如果列表长度是偶数&#xff0c;中位数则是中间两个数的平均值。 例如&#xff0c; [2,3,4] 的中位数是 3 [2,3] 的中位数是 (2 3) / 2 2.5 设计一个支持以下两种操作的数…

Atlas Samples Suse Linux 10.1

http://asyncpostback.com/ 这是一个展示Altas的相关Features的例子网站,网站的所有例子都有代码,是学习Altas的绝好教程Novell 发布了 SUSE Linux 10.1. 这个版本包含完整的Mono 开发环境和许多基于Mono的桌面应用. 对于专注于.net开发的你非常有必要来了解Mono.因为Mono的支持…

sudo apt-get update 与 sudo apt-get upgrate 的区别

1.sudo gedit /etc/apt/sources.list 源列表里面放置的一行行网址&#xff0c;在这个文件里加入或者注释&#xff08;加#&#xff09;掉一些源后&#xff0c;保存。这时候&#xff0c;我们的源列表里指向的软件就会增加或减少一部分 2. sudo apt-get update 这个命令&#xff…

oracle索引建立

1、明确地创建索引create index index_name on table_name(field_name)tablespace tablespace_namepctfree 5initrans 2maxtrans 255storage(minextents 1maxextents 16382pctincrease 0);2、创建基于函数的索引常用与UPPER、LOWER、TO_CHAR(date)等函数分类上&#xff0c;例&a…

android 中使用AsyncTask实现简单的异步编程

在开发移动客户端的时候往往要使用多线程来进行操作&#xff0c;我们通常会将耗时的操作放在单独的线程执行&#xff0c;避免其占用主线程而给用户带来不好的用户体验。但是在子线程中无法去操作主线程&#xff08;UI 线程&#xff09;&#xff0c;在子线程中操作UI线程会出现错…

网页制作秘招

第一招&#xff1a;有些主页&#xff0c;若把鼠标指向某个链接&#xff0c;在状态栏会出现该链接的说明&#xff0c;是不是会感觉很方便&#xff1f;其实这不难做到&#xff0c;只要在链接语句中加入以下的内容&#xff0c;就可以实现了&#xff01;试试看&#xff01;〈HTML〉…

LeetCode—52. N皇后 II(困难)

52. N皇后 II&#xff08;困难&#xff09; 题目描述&#xff1a; n 皇后问题研究的是如何将 n 个皇后放置在 n n 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。即令其中任意两个皇后都不同列、同行和在一条斜线上。 给你一个整数 n &#xff0c;返回 n 皇后问题不…

win10 子系统 ubuntu 16.04 安装 docker

2&#xff0c;更新系统软件 $ sudo apt-get update 3&#xff0c;安装依赖包 $ sudo apt-get install \apt-transport-https \ca-certificates \curl \software-properties-common 4&#xff0c;添加官方密钥 执行该命令时&#xff0c;如遇到长时间没有响应说明网络连接不到doc…

解析 Page.MaintainScrollPositionOnPostBack 属性

ASP.NET 的页面执行 PostBack 动作时&#xff0c;页面由伺服端重新传给客户端&#xff0c;而页面的垂直滚动条会跳回最上方&#xff0c;水平滚动条会跳回最左方。为了解决此情形&#xff0c;只要将 Page 的MaintainScrollPositionOnPostBack 属性设为True 时&#xff0c;页面就…

创建WebPart时的数据库连接问题。

ASP.NET加入的WebPart功能确实令人眼前一亮&#xff0c;问题如下&#xff1a;当我拖动一个WebPartManager到页面后&#xff0c;编译运行&#xff0c;竟然出现如下错误&#xff1a; 引用 “/WebSite1”应用程序中的服务器错误。 ----------------------------------------------…

Java创建大小顶堆

——实现模拟的大小顶堆&#xff08;优先队列与TreeMap&#xff09; 以Java中可自排序的数据结构&#xff0c;实现加入元素后&#xff0c;堆顶保持最大/最小 优先队列 ​ PriorityQueue是优先队列&#xff0c;作用是保证每次取出的元素都是队列中权值最小的&#xff0c;这里…

strcpy函数的实现

大家一般觉得名不见经传strcpy函数实现不是非常难&#xff0c;流行的strcpy函数写法是&#xff1a; char *my_strcpy(char *dst,const char *src) {assert(dst ! NULL);assert(src ! NULL);char *ret dst;while((* dst * src) ! \0) ;return ret; }假设注意到&#xff1a; 1&…

Maven 3-Maven依赖版本冲突的分析及解决小结

摘自&#xff1a; https://www.cnblogs.com/aspirant/p/8532962.html 举例A依赖于B及C&#xff0c;而B又依赖于X、Y&#xff0c;而C依赖于X、M&#xff0c;则A除引B及C的依赖包下&#xff0c;还会引入X&#xff0c;Y&#xff0c;M的依赖包&#xff08;一般情况下了&#xff0c;…

阮一峰:jQuery官方基础教程笔记

原文地址&#xff1a;http://www.jobbole.com/entry.php/1151 jQuery是目前使用最广泛的javascript函数库。  据统计&#xff0c;全世界排名前100万的网站&#xff0c;有46%使用jQuery&#xff0c;远远超过其他库。微软公司甚至把jQuery作为他们的官方库。  对于网页开发者…

LeetCode—297. 二叉树的序列化与反序列化(困难)

297. 二叉树的序列化与反序列化&#xff08;困难&#xff09; 题目描述&#xff1a; 序列化是将一个数据结构或者对象转换为连续的比特位的操作&#xff0c;进而可以将转换后的数据存储在一个文件或者内存中&#xff0c;同时也可以通过网络传输到另一个计算机环境&#xff0c;…

MIME类型不可小视

在完成一个在线播放模块的时候,遇到麻烦,使用一个空页面,采用流方式读取媒体文件,然后将此页面作为文件名赋给网页播放器的FileName属性.结果是常用流媒体格式的文件播放正常,类似于ram,avi,asf这些格式的文件不能播放,报出来的错误也是说文件不可识别.查看详细信息只给出一个标…

一个简单粗暴的前后端分离方案

项目背景 刚刚参加完一个项目&#xff0c;背景&#xff1a;后端是用java&#xff0c;后端服务已经开发的差不多了&#xff0c;现在要通过web的方式对外提供服务&#xff0c;也就是B/S架构。后端专注做业务逻辑&#xff0c;不想在后端做页面渲染的事情&#xff0c;只向前端提供数…

Jena Fuseki安装完成后不能添加数据库

问题描述&#xff1a;安装Jena成功后可以进入管理页面&#xff0c;无法通过界面选择和查询数据 解决方案&#xff1a; 进入 apache-jena-fuseki-3.12.0\run 修改 shiro.ini 配置文件 注释 /$/** localhostFilter&#xff0c;然后重启 转载于:https://www.cnblogs.com/bincodin…

python的setup()与py2exe

自己从事的工作涉及到Python&#xff0c;而之前从来没用过&#xff0c;只好从头学&#xff0c;其实看Python的代码还挺容易看懂的&#xff0c;只是要自己写就很难。 下面是看源码时遇到的一段代码&#xff1a; from distutils.core import setupimport py2exesetup(console[Pyt…

LeetCode—54. 螺旋矩阵

54. 螺旋矩阵 题目描述&#xff1a; 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 考察重点&#xff1a;使用全局变量way数组&#xff0c;配合变量n记录走的方向&#xff1b;nowX&#xff0c;nowY记录当前位置&am…