c++ getline()和get()的区别
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()的区别的更多相关文章
- getline和get的区别
#include<iostream> #include<fstream> #include<cstring> using namespace std; int ma ...
- C++学习46 getline()函数读入一行字符 一些与输入有关的istream类成员函数
getline函数的作用是从输入流中读取一行字符,其用法与带3个参数的get函数类似.即 cin.getline(字符数组(或字符指针), 字符个数n, 终止标志字符) [例13.7] 用get ...
- 关于cin.getline和cin.get
<C++ Primer Plus(第六版)> P124 第8题 #include <iostream> using namespace std; struct Pizza ...
- getline
istream& istream::getline(char*, streamsize,char= '\n'); 函数getline与get的区别在于,函数get当遇到分隔符后,停止获取,并将 ...
- C/C++中字符串的输入问题
standard C I/O 头文件:#include <stdio.h> . getchar() 原型:int getchar(void); 功能:从标准输入获取并返回下一个字符,并释放 ...
- C++回顾day03---<输入输出流>
一:C++输入输出包含下面3个方面 (一)标准I/O 对系统指定的标准设备的输入和输出.即从键盘输入数据,输出到显示器屏幕.这种输入输出称为标准的输入输出. (二)文件I/O 以外存磁盘文件为对象进行 ...
- C++中cin的用法汇总
cin可以用于接收输入,最常见的是从控制台接收.在刚学习C++的时候经常会用cin来接收数据,这里想要系统的总结一下cin的用法,保证不灌水. C++中的cin是一个 istream对象,从标准输入中 ...
- C艹复合类型(字符串)
在C艹中有两种字符串形式, 一种是C-风格, 另一种是C艹风格的 初始化: char str[10] = {'a', 'c', 'd', '\0'};char str[20]= “aaa”; stri ...
- 流类库继承体系(IO流,文件流,串流)和 字符串流的基本操作
一.IO.流 数据的输入和输出(input/output简写为I/O) 对标准输入设备和标准输出设备的输入输出简称为标准I/O 对在外存磁盘上文件的输入输出简称为文件I/O 对内存中指定的字符串存储空 ...
随机推荐
- luogu P3391 【模板】文艺平衡树(Splay)
嘟嘟嘟 突然觉得splay挺有意思的-- 这道题只有一个任务:区间翻转. 首先应该知道的是,splay和线段树一样,都可以打标记,然后走到每一个节点之前先下传. 那怎么打标记呢?还应该有"区 ...
- Django 连接Mysql异常处理
启动manage.py提示 连接数据库异常 django.db.utils.OperationalError: (2003, "Can't connect to MySQL server o ...
- 多线程之并发容器ConcurrentHashMap(JDK1.6)
简介 ConcurrentHashMap 是 util.concurrent 包的重要成员.本文将结合 Java 内存模型,分析 JDK 源代码,探索 ConcurrentHashMap 高并发的具体 ...
- c++——对象的构造和析构函数、构造函数的分类及调用
1构造函数和析构函数的概念 有关构造函数 1构造函数定义及调用 1)C++中的类可以定义与类名相同的特殊成员函数,这种与类名相同的成员函数叫做构造函数: 2)构造函数在定义时可以有参数: 3)没有任何 ...
- Kafka设计解析(十六)Kafka 0.11消息设计
转载自 huxihx,原文链接 [原创]Kafka 0.11消息设计 目录 一.Kafka消息层次设计 1. v1格式 2. v2格式 二.v1消息格式 三.v2消息格式 四.测试对比 Kafka 0 ...
- 小H和密码
链接:https://www.nowcoder.com/acm/contest/72/B来源:牛客网 题目描述 小H在击败怪兽后,被一个密码锁挡住了去路 密码锁由N个转盘组成,编号为1 ...
- 数据库 —— mySQL相关
目录 使用笔记 问题解决 资源链接 1.使用笔记 1.命令行客户端显示无法调整表格显示宽度,可以考虑在查询语句尾后添加 \G; 2.插入语句字符串转时间:link 2.问题解决 1.不能显示插入中文字 ...
- java_继承、实现、依赖、关联、聚合、组合的代码表示
一.继承.实现.依赖.关联.聚合.组合的简单代码表示 1.继承关系 1).文字描述 一个类或者接口继承了另一个类或者接口,增加了在原有的方法和属性上增加了新的方法和属性. 2).代码表示 class ...
- 使用SSH命令从一台Linux远程登陆到另一台Linux
命令格式: ssh 用户名@IP 示例: ssh root@192.168.1.10 回车,然后根据提示输入登陆密码即可.
- 四层and七层负载均衡
四层负载/七层负载 在常规运维工作中,经常会运用到负载均衡服务.负载均衡分为四层负载和七层负载,那么这两者之间有什么不同? 废话不多说,详解如下: 1. 什么是负载均衡 1)负载均衡(Load ...