C++ cin.get()与cin.getline() 二者区别
来源:互联网 发布:大数据的由来 编辑:程序博客网 时间:2024/06/08 00:54
在C++中,我们通常使用cin来来获取键盘输入的字符,但是cin会利用空白(空格、制表符和换行符)来确定字符串的结束位置,这意味着如果我们要输入的文本中间含有一个空白符号的话,将不能完全正确的数据读取操作,例如,如果我们使用代码cin<<name,来将一个人名读取到变量name中,当我们输入Steve Jobs时,name中存储的值只有空白符之间的字符,而不会存储Jobs。因此,我们需要另一种字符读取方式——面向行的输入:getline()与get()
getline()函数读取整行,它通过回车键输入的换行符来确定结尾,一般使用时传入两个参数,第一个参数用来存储输入行的变量名,第二个参数是要读取的字符个数,如:
cin.getline(name,20)这行代码表示会将一行字符中的19个读入到那么数组中,最后一个位置用于存储在结尾自动添加的空白符
同样get()函数也可以完成上述功能。
下面我们来谈谈这两个面向行输入函数的区别:
1.在读取空行时:
getline()会在前一条语句结束读取的位置开始读取
而get()在读取空行后将设置失效位(failbit),这意味着接下来的输入将被中断
2.关于换行符:
二者都以换行符为终止符号,但是它们对换行符的处理不同,前者会直接将换行符从输入缓冲区中去除,而后者会将其保留在缓冲区中,由于get()会将换行符保留在缓冲区中,因此我们往往需要再次调用get()来将换行符从缓冲区中读取出来,以便后续的正常读取,一般利用如下形式来完成该操作:
cin.get(name).get()朋友们可能会觉得这样调用很麻烦,实际上,这有助于我们调试代码,因为在实际使用中,我们无法得知停止读取的原因是由于已经读取了整行,还是由于字符数组已经填满,而利用这种方式,我们可以查看下一个输入字符,如果是换行符,说明已经读取了整行;否则,说明改行还有其他输入
阅读全文
1 0
- C++ cin.get()与cin.getline() 二者区别
- cin.get()与cin.getline()的区别
- cin.get()与cin.getline()的区别
- cin.get()与cin.getline()的区别
- cin.get( )与cin.getline( )的区别
- cin.get( )与cin.getline( )的区别
- cin.get( )与cin.getline( )的区别
- cin.get( )与cin.getline( )的区别
- cin.get( )与cin.getline( )的区别
- C++: cin.get()与cin.getline()
- cin<<,cin.get(),cin.getline()等区别与联系
- cin、cin.get()、cin.getline()、gets()区别与用法
- cin.get()与cin.getline()
- cin.get与cin.getline
- cin.getline()与cin.get()
- cin.get(),cin,cin.getline()的区别
- cin,cin.get,cin.getline的区别
- cin cin.get() cin.getline() string类成员函数getline(cin,str)使用方法区别与联系
- 士兵杀敌(三)
- 为什么会产生焦虑?
- HTML's HelloWorld
- STM32F103ZE单片机在WWDG窗口看门狗的EWI中断中喂狗导致系统复位的原因及解决办法(中断函数重入问题)
- 连接
- C++ cin.get()与cin.getline() 二者区别
- <leetcode> 521. Longest Uncommon Subsequence I
- 安装pygame
- [ github ] 我是怎么用GitHub的?
- SQL索引
- 安卓开发中的色彩管理
- hadoop搭建之jdk安装
- angular jit and aot
- install mysql on Linux CentOs