C++获取字符cin,getchar,get,getline的区别
原创作品,转载请注明来源:http://www.cnblogs.com/shrimp-can/p/5241544.html
1.cin>>
1)最常见的是获取输入的一个字符或数字,如
int a,b;
cin>>a>>b;
注意:cin>>会自动过滤掉不可见字符(如空格 回车 tab等)。若不想过滤掉空白字符,可以用noskipws流进行控制。
如下程序,没有过滤掉不可见字符,输入的空格字符存入了input[1]中,也可输出。
2)获取输入的字符串,可以用数组或string类型。如
char a[20];
cin>>a;
cout<<a<<endl;
或者string类型:
string s;
cin>>s;
cout<<s<<endl;
注意:遇到空格、回车等会结束获取输入的字符串,后面的字符串会过滤掉(存放在输入流中)。如果后面还需要输入字符串,则会从前面存放的字符串开始获取。
遇空格、回车等结束。
po存放在了string中。
2.cin.get()
1)cin.get(字符变量名),用来接收字符,只获取一个字符,可以接收空格,遇回车结束
2)cin.get(数组名,接收字符数目),用来接收字符串,可以接收空格,遇回车结束。
注意:数组的最后一个字符会是‘\0’,设接收字符数目为n,如果输入的字符串大于等于n,则实际接收到的输入是字符串的前面n-1个字符,包括空格(不包括回车,遇到回车就结束了),会自动在后面增加一个‘\0’。
3)cin.get(),没有参数,主要用于舍弃输入流中不需要的字符,或者舍弃回车,即舍弃输入流中的一个字符。
没有用cin.get(),则后面的s会从输入流中继续读入
有cin.get(),则h后面的s被省略了。
3.cin.getline()
实际是cin.getline(接收字符串到m,接收个数n,结束字符)。接收一个字符串,可以接收空格等,最后一个字符为‘\0’。结束符可以通过设置第三个参数自己设置,默认是回车。m不能为string类型。
注意:实际接收到的要比n少一个,因为最后一个字符为'\0'。
4.getline()
用于string类的。使用需包含头文件#include<string>。getline(cin,string s),接收一个字符串,可以接收空格、回车等
与cin.getline()的区别:1.cin.getline()接收输入字符串的是数组,getline()是string类型。
2.cin.getline()可以接收空格,但不能接收回车;getline()可以接收空格和回车
3.cin.getline()会在数组结尾是'\0',getline()不会
5.gets()
gets(m)用于string类的,需包含#include<string>。可以接收空格,遇回车结束。可用于多维数组。
6.getchar()
m=getchar(),需包含#include<string>
参考:
http://blog.csdn.net/jiangxinnju/article/details/20492453
C++获取字符cin,getchar,get,getline的区别的更多相关文章
- c++中获取字符cin,getchar,get,getline的区别
http://www.imeee.cn/News/GouWu/20090801/221298.html cin.get()与getchar()函数有什么区别? 详细点..C++中几个输入函数的用法和区 ...
- Linux C 字符函数 getchar()、putchar() 与 EOF 详解
首先给出<The_C_Programming_Language>这本书中的例子: #include <stdio.h> int main() { int c; c = getc ...
- 日常笔记4关于cin、cin.get()、cin.getline()、getline()使用区别
1.关于PAT中段错误 使用字符数组出现错误: char str[256]; 报错段错误,然后改用C++中的string 改成: string str; 同char数组一样,也可以使用下标来取单个字符 ...
- Swift3.0语言教程获取字符
Swift3.0语言教程获取字符 Swift3.0语言教程获取字符,在字符串中获取某一下标位置(下标索引)处的字符是很常见的功能,在NSString中使用character(at:)方法实现,其语法形 ...
- C#获取字符首字母
///<summary> /// 获取字符首字母 /// </summary> public static string GetPyChar(string c) { if (s ...
- 获取字符宽度:并非自适应。coretext去计算
获取字符宽度:并非自适应.coretext去计算 UniChar ch = [ns_str characterAtIndex:0]; CGGlyph glyph = 0; CTFontGetGlyph ...
- lastIndexOf方法——获取字符最后的索引
1.2.20 lastIndexOf方法——获取字符最后的索引 2013-08-29 14:55:18 我来说两句 收藏 我要投稿 本文所属图书 > Java程序开发参考手册 ...
- javascript 获取字符递增
比如A->B,AA->AB,Z->AA 参考https://blog.csdn.net/xiaotao2004/article/details/75096607 C#版本,改写为ja ...
- 关于C++中字符串输入get与getline的区别
最近使用C++中自己老是忘记的一个点,get与getline的区别. 1.get与getline get和getline所属iostream类,作用是读取一整行,通过换行符确定读取结束,他们都可以读取 ...
随机推荐
- 内功心法 -- java.util.ArrayList<E> (1)
写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...
- 内功心法 -- Java中的深拷贝和浅拷贝
写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------这篇博客主要来谈谈" ...
- 使用express.js框架一步步实现基本应用以及构建可扩展的web应用
最近过年在家有点懈怠,但是自己也不断在学习新的前端技术,在家琢磨了express.js的web框架. 框架的作用就是提高开发效率,快速产出结果.即使不使用框架,我们也会在开发过程中逐渐形成构成框架. ...
- Quartz_理解1
一.引言 quratz是目前最为成熟,使用最广泛的java任务调度框架,功能强大配置灵活.在企业应用中占重要地位.quratz在集群环境中的使用方式是每个企业级系统都要考虑的问题.早在2006年,在I ...
- Livy原理详解
Livy的概述(引自社区) Livy(当前是alpha版本)是一个提供rest接口和spark集群交互的服务.它可以提交spark job或者spark一段代码,同步或者异步的返回结果:也提供spar ...
- js定时函数
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html& ...
- (4)activiti之uel表达式
有了前面几章,我们肯定有一定的困惑,activiti如何与实际业务整合,比如一条采购单,如何跟一个流程实例互相关联起来? 这里就需要使用到activiti启动流程实例时设置一个流程实例的busines ...
- 【android开发笔记】为Button的背景图片添加边框式样式效果
现在做的项目遇到一个问题,设计给过来的图片只有一种状态,但是实现的需求是要求有两个状态,另一种选状态为图片背景加边框.如图: 刚开使用使用ImageView ,ImageViewButton 效果不是 ...
- [Hadoop] - Hadoop Mapreduce Error: GC overhead limit exceeded
在运行mapreduce的时候,出现Error: GC overhead limit exceeded,查看log日志,发现异常信息为 2015-12-11 11:48:44,716 FATAL [m ...
- 纯css实现京东导航菜单
纯CSS代码实现导航菜单,推荐在chrome预览! 预览请点击这里:mygithub <!doctype html> <html lang="en"> &l ...