1、方法get(char &)和get(void)提供不跳过空白的单字符输入功能;
2、函数get(char * , int , char)和getline(char * , int , char)在默认情况下读取整行而不是一个单词;
它们被称为非格式转化输入函数,因为它们只是读取字符输入,而不会跳过空白,也不进行数据转换。

他们不同于cin是遇到空格即输出结束。

在使用char参数或没有参数的情况下,get()方法读取下一个字符,及时该字符是空格,制表符或换行符。get(char & ch)版本将输入字符赋给其参数,而get(void)版本将输入字符转换为整型(通常为int)。然后将其返回。

下面用例子简单说明它们的不同用法。

1、get(char&)

char ch;
cin.get(ch);
while(ch != '\n'){
cout<<ch;
cin.get(ch)
}

当读取字符到换行符时结束,如果没有换行符判断,那么遇到输出结束时调用setstate(failbit)导致cin的测试结果为false

无参数的get()用法是

ch = cin.get();

其返回值为int。

对比cin.get(ch) 与 cin.get()

特征                                                 cin.get(ch)                                              ch = cin.get()

传输输入字符的方法                                   赋给参数ch                                        将函数返回值赋给ch

字符输入时函数的返回值                     指向istream对象的引用                                  字符编码(int值)

到达文件尾时函数的返回值                            转换为false                                                    EOF

2、字符串输入:getline(),get()

istream& get(char*, int, char);
istream& get(char*, int); istream& getline(char*, int, char);
istream& getline(char*, int);

第一个参数是存放字符串的内存单元地址,第二个参数要比最大字符数大1(存放'\0'),第三个参数指定用作分隔符的字符,默认是'\n';

那么这两个函数的区别在于getline()会丢弃读取到的分隔符,而get()不会。因此在遇到空行的时候两个函数的操作就不同。因为getline()会将换行符视作一个字符。

getline(char *, int)        如果没有读取任何字符(但换行符被视为读取了一个字符),则设置failbit

如果读取了最大数目的字符,且行中还有其他字符,则设置failbit

get(char *, int)             如果没有读取任何字符,则设置failbit

还有一种调用方式

getline(cin, string&);

---------------------
参考:https://blog.csdn.net/qq_42128241/article/details/81772875

c++ getline()和get()的区别的更多相关文章

  1. getline和get的区别

    #include<iostream> #include<fstream> #include<cstring> using namespace std; int ma ...

  2. C++学习46 getline()函数读入一行字符 一些与输入有关的istream类成员函数

    getline函数的作用是从输入流中读取一行字符,其用法与带3个参数的get函数类似.即    cin.getline(字符数组(或字符指针), 字符个数n, 终止标志字符) [例13.7] 用get ...

  3. 关于cin.getline和cin.get

    <C++ Primer Plus(第六版)> P124 第8题 #include <iostream> using namespace std;   struct Pizza ...

  4. getline

    istream& istream::getline(char*, streamsize,char= '\n'); 函数getline与get的区别在于,函数get当遇到分隔符后,停止获取,并将 ...

  5. C/C++中字符串的输入问题

    standard C I/O 头文件:#include <stdio.h> . getchar() 原型:int getchar(void); 功能:从标准输入获取并返回下一个字符,并释放 ...

  6. C++回顾day03---<输入输出流>

    一:C++输入输出包含下面3个方面 (一)标准I/O 对系统指定的标准设备的输入和输出.即从键盘输入数据,输出到显示器屏幕.这种输入输出称为标准的输入输出. (二)文件I/O 以外存磁盘文件为对象进行 ...

  7. C++中cin的用法汇总

    cin可以用于接收输入,最常见的是从控制台接收.在刚学习C++的时候经常会用cin来接收数据,这里想要系统的总结一下cin的用法,保证不灌水. C++中的cin是一个 istream对象,从标准输入中 ...

  8. C艹复合类型(字符串)

    在C艹中有两种字符串形式, 一种是C-风格, 另一种是C艹风格的 初始化: char str[10] = {'a', 'c', 'd', '\0'};char str[20]= “aaa”; stri ...

  9. 流类库继承体系(IO流,文件流,串流)和 字符串流的基本操作

    一.IO.流 数据的输入和输出(input/output简写为I/O) 对标准输入设备和标准输出设备的输入输出简称为标准I/O 对在外存磁盘上文件的输入输出简称为文件I/O 对内存中指定的字符串存储空 ...

随机推荐

  1. 【转】彻底理解android中的内部存储与外部存储

    我们先来考虑这样一个问题: 打开手机设置,选择应用管理,选择任意一个App,然后你会看到两个按钮,一个是清除缓存,另一个是清除数据,那么当我们点击清除缓存的时候清除的是哪里的数据?当我们点击清除数据的 ...

  2. java中抽象的(abstract)方法是否可同时是静态的(static),是否可同时是本地方法(native),是否可同时被synchronized修饰

    1.abstract与static what abstract:用来声明抽象方法,抽象方法没有方法体,不能被直接调用,必须在子类overriding后才能使用. static:用来声明静态方法,静态方 ...

  3. 《数据结构算法分析C描述》引论:选择问题,字谜游戏问题

    #include <stdio.h> #include <stdlib.h> // 第一题 // 找出N个数的第k个最大者 // 方法1:排序(冒泡),降序找出第k个值 // ...

  4. opatch auto 安装11.2.0.4.20190115 PSU遇到 OUI-67133: Execution of PRE script failed,with returen value 1 报错

    AIX 7.2 下Oracle 11.2.0.4  RAC数据库root用户在使用 /u01/app/11.2.0/grid/OPatch/opatch auto /soft/28813878 -oc ...

  5. SQL进阶语法的多表操作

    AS别名 多张表联合操作,如果表多,字段名长,不方便阅读.这里我们可以使用  as  关键字来对字段名设置别名. as也可以省略,看个人喜好,在这里我还是支持把 as 写上,这样我们在面对复杂的SQL ...

  6. C++程序设计--实验二

    第二次实验主要内容是函数重载,快速排序及其模板实现,简单的user类实现. 实验结论: 一.函数重载编程练习 /*编写重载函数add(),实现对int型,double型和Complex型数据的加法.在 ...

  7. HO引擎近况20180111

    明明想着10号更新了,怎么就忘了呢? 公司的项目又被砍了,几个同事被开,我又转到另外一下组了,难道真的是我到哪哪黄? 快过年了,今年公司年会就在附近,太好了不用想怎么编理由请假事了,还有可能中个奖品, ...

  8. hbase-列存储动态数据库

    1)   HBase是什么? HBase是建立在Hadoop文件系统之上的分布式面向列的数据库.它是一个开源项目,是横向扩展的. HBase是一个数据模型,类似于谷歌的大表设计,可以提供快速随机访问海 ...

  9. Linux-2.6_LCD驱动学习

    内核自带的驱动LCD,drivers/video/Fbmem.c LCD驱动程序 假设app: open("/dev/fb0", ...) 主设备号: 29, 次设备号: 0--- ...

  10. Matlab中的“prod”函数

    B = prod(A)将A矩阵不同维的元素的乘积返回到矩阵B. 如果A是向量,prod(A)返回A向量的乘积.如果A是矩阵,prod(A)将A看作列向量,返回每一列元素的乘积并组成一个行向量B.如果A ...