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 对内存中指定的字符串存储空 ...
随机推荐
- 通过应用程序域AppDomain加载和卸载程序集
微软装配车的大门似乎只为货物装载敞开大门,却将卸载工人拒之门外.车门的钥匙只有一把,若要获得还需要你费一些心思.我在学习Remoting的时候,就遇到一个扰人的问题,就是Remoting为远程对象仅提 ...
- Metapackage包
Metapackage(功能包集)是把一些相近的功能模块. 软件包放到一起. ROS里常见的Metapacakge有: 2.Metapackage写法 CMakeLists.txt 写法如下: cma ...
- NYOJ 44 字串和 (最大字串和 线性dp)
题目链接: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=44 子串和 时间限制:5000 ms | 内存限制:65535 KB 难度:3 ...
- 故障排除--kubernetes 运维操作步骤 -- kubedns -- busybox -- nslookup 问题
1.node的扩容 在k8s中,对一个新的node的加入非常简单,只需要在node节点上安装docker.kubelet和kube-proxy服务,然后将kubelet和kube-proxy的启动参数 ...
- mysql5.7.22 下载过程
进入官网www.mysql.com ,选择downloads: 选择 Community 再选择MySQL community server 选择5.7的版本,这个看自己选择,有问题看标题 选择5.7 ...
- SEO优化上首页之搜索引擎作弊案例与反作弊原理
搜索引擎流量价值巨大,有不少人专门研究排名机制,利用搜索引擎漏洞作弊,寻求快速提高网站排名,进而获取更多的流量和利益,甚至有的网站优化公司专门提供作弊服务.搜索引擎为了杜绝这种情况,必须能过滤大量垃圾 ...
- filebeat 插件开发
filebeat是一个轻量的日志收集工具,全套使用go语言开发. 我目前遇到的问题是,在收集的时候需要对数据进行采样,采样比和采样形式要灵活,因为可能在多个项目会使用到这个日志收集功能.刚开始 ...
- Verilog 位拼接运算符的优先级
最近研究FIFO的时候,在开源工程中看到这样一段代码 ; always @(posedge rd_clk) {'b0}}; else {'b0}}; else if(re) rp_bin <= ...
- 用NI的数据采集卡实现简单电子测试之3——绘制二极管V-I特性曲线图
本文从本人的163博客搬迁至此. 接下来用USB-6009和LabVIEW实现对二极管最重要的特性曲线“V-I特性曲线”的测试和绘制. 一.什么是二极管V-I特性曲线 康华光版的<电子技术 ...
- Advanced Find and Replace(文件内容搜索替换工具)v7.8.1简体中文破解版
Advanced Find and Replace是一款文件内容搜索工具,同时也是文件内容批量替换工具.支持通配符和正则表达式,方便快捷强大! 显示中文的方法:第二个菜单-Language-选 下载地 ...