栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++ 常用输入方法以及它们的区别 cin cin.getline,getche等

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++ 常用输入方法以及它们的区别 cin cin.getline,getche等

文章目录
  • 前言
  • 一、cin.get
  • 二、cin.getline()
  • 三、cin
  • 四.getline
  • 五.scanf
  • 六、getchar()
  • 七、getch()
  • 八、getche()
  • p.s

前言

学了c++一阵日子了,对于一些常见的输入方法却总是云里雾里,为什么cin.getline之后不用cin.get吸收回车?为什么cin之后就需要,cin之前也不需要?getchar,getche,getch,它们之间区别有哪些。这些东西我总是搞忘,然后查资料,然后搞忘。现在就让我来一一总结一下。

一、cin.get

1.有三个重载形式。
cin.get()可以吸收单个值而不返回;
a=cin.get cin.get(a)都是将返回值赋给a的方法;
cin.get(str,n)是将输入的n-1 个值给str,第n个值默认为‘’,此方法在遇到回车符时结束。最后缓冲区仍留下回车符。
也可写cin.get(str,n,‘a’)遇到a结束

二、cin.getline()

cin.getline(str,n)是将输入的n-1 个值给str,第n个值默认为‘’,此方法在遇到回车符时结束。最后缓冲区不留下回车符。(但也不吸收回车符)

三、cin

输入结束条件 :遇到Enter、Space、Tab键。

当cin>>从缓冲区中读取数据时,若缓冲区中第一个字符是空格、tab或换行这些分隔符时,cin>>会将其忽略并清除,继续读取下一个字符,(因此,输入前先回车不影响结果)若缓冲区为空,则继续等待。但是如果读取成功,字符后面的分隔符是残留在缓冲区的,cin>>不做处理。

不想略过空白字符,那就使用 noskipws 流控制。比如cin>>noskipws>>input;

四.getline

getline函数的参数使用了string字符串,所以声明在了头文件中了。
也是将输入的字符串赋给string而不是char数组,与上述cin.get与cin.getline不同。
getline(cin,str)为其用法,getline()遇到结束符时,会将结束符一并读入指定的string中,再将结束符替换为空字符。;

五.scanf

与cin在细节上相同

六、getchar()

函数名:getchar()

头文件:stdio.h

功 能:读取控制台输入的字符,并保存在键盘缓冲区中。直到用户按回车为止(回车字符也放在缓冲区中)。

七、getch()

函数名:getch()

头文件:conio.h

功 能:从控制台读取一个字符,但不显示在屏幕上(不带回显)。

原 型:int getch(void)

返回值:读取的字符

八、getche()

函数名:getche()

头文件:conio.h

功 能:输入后立即从控制台取字符,不以回车为结束,且立刻显示在屏幕上(带回显)。

用 法:int getche(void);

p.s

对getche,输入回车再输出它的ascll码能看到其是13而不是10,这是为什么?
原因是,按下回车键在windows其实有两个符号r n,getche首先接受的是r。通常来说。C语言会自动将回车转化为n,而getch()则是比较低级的,会越过这个处理,貌似没有经过输入流缓冲,而是直接调用键盘服务中断获得的,就是原始按键。因此仍是r n。这里有详情解释。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/352751.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号