C++ getline函数用法详解
虽然可以使用 cin 和 >> 运算符来输入字符串,但它可能会导致一些需要注意的问题。
当 cin 读取数据时,它会传递并忽略任何前导白色空格字符(空格、制表符或换行符)。一旦它接触到第一个非空格字符即开始阅读,当它读取到下一个空白字符时,它将停止读取。以下面的语句为例:
cin >> namel;
可以输入 “Mark” 或 “Twain”,但不能输入 “Mark Twain”,因为 cin 不能输入包含嵌入空格的字符串。下面程序演示了这个问题:
#include <iostream>
#include <string> // Header file needed to use string objects
using namespace std;
int main()
{string name;string city;cout << "Please enter your name: ";cin >> name;cout << "Enter the city you live in: ";cin >> city;cout << "Hello, " << name << endl;cout << "You live in " << city << endl;return 0;
}
程序输出结果:
Please enter your name: John Doe
Enter the city you live in: Hello, John
You live in Doe
请注意,在这个示例中,用户根本没有机会输入 city 城市名。因为在第一个输入语句中,当 cin 读取到 John 和 Doe 之间的空格时,它就会停止阅读,只存储 John 作为 name 的值。在第二个输入语句中, cin 使用键盘缓冲区中找到的剩余字符,并存储 Doe 作为 city 的值。
为了解决这个问题,可以使用一个叫做 getline 的 C++ 函数。此函数可读取整行,包括前导和嵌入的空格,并将其存储在字符串对象中。
getline 函数如下所示:
getline(cin, inputLine);
其中 cin 是正在读取的输入流,而 inputLine 是接收输入字符串的 string 变量的名称。下面的程序演示了 getline 函数的应用:
// This program illustrates using the getline function
//to read character data into a string object.
#include <iostream>
#include <string> // Header file needed to use string objects
using namespace std;
int main()
{string name;string city;cout << "Please enter your name: ";getline(cin, name);cout << "Enter the city you live in: ";getline(cin, city);cout << "Hello, " << name << endl;cout << "You live in " << city << endl;return 0;
}
程序输出结果:
Please enter your name: John Doe
Enter the city you live in: Chicago
Hello, John Doe
You live in Chicago
C++ getline函数用法详解相关推荐
- C++ 中的getline()函数用法详解
遇到了要输入一行字符串的操作,我想除了fgets()的方法(fgets()用法链接),getline()也是可以的,但是我对getline的操作不熟悉,便查阅了很多资料,发现都说的很模糊,借这个机会我 ...
- getline()与cin.getline()函数用法详解
getline()函数可以让我们很方便的输入一串字符串.getline()不仅简单,而且安全,因为全局函数 getline() 会帮你处理缓冲区用完之类的麻烦.常见的getline()函数语法有两条: ...
- C++getline函数用法详解
虽然可以使用 cin 和 >> 运算符来输入字符串,但它可能会导致一些需要注意的问题. 当 cin 读取数据时,它会传递并忽略任何前导白色空格字符(空格.制表符或换行符).一旦它接触到第一 ...
- ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多)
ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多) https://blog.csdn.net/qq_25221835/article/details/82762416 post ...
- C++中substr()函数用法详解
C++中substr()函数用法详解 原型: string substr (size_t pos = 0, size_t len = npos) const; 返回一个新构造的string对象,其值初 ...
- LayoutInflater的inflate函数用法详解
LayoutInflater的inflate函数用法详解 LayoutInflater作用是将layout的xml布局文件实例化为View类对象. 获取LayoutInflater的方法有如下三种: ...
- c++ memset 语言_C++中memset函数用法详解
本文实例讲述了C++中memset函数用法.分享给大家供大家参考,具体如下: 功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,块的大小由第三个参数指定,这个函数通常 ...
- mysql: union / union all / 自定义函数用法详解
mysql: union / union all http://www.cnblogs.com/wangyayun/p/6133540.html mysql:自定义函数用法详解 http://www. ...
- python中mat函数_Python中flatten( )函数及函数用法详解
flatten()函数用法 flatten是numpy.ndarray.flatten的一个函数,即返回一个一维数组. flatten只能适用于numpy对象,即array或者mat,普通的list列 ...
最新文章
- matlab找出二维矩阵中最大值的位置或者最小值的位置
- An example of parsing xml file using Scala
- 必须Mark下,2019 年度中国质量协会质量技术优秀奖
- JavaScript条形码生成插件 - 封装篇
- 转载:世上最全的百物妙用窍门-绝对不能错过,不断更新中
- 优秀的管理者如何带好团队(这几个技巧你是否学会)
- 非线性光纤光学_光学青年| 刘兆军教授与晶体光纤激光技术研究,做核心材料和器件...
- [转]色度抽样(4:2:0)到底是什么意思?
- python实用程序育儿法下载_Python机器学习经典实例
- Unity3d第一人称视角如何设置
- Mac下导入virtualenv报错:its parent directory is not owned by the current user
- JAVA经典面试题(来源于互联网)
- 用于2D动画的实时嘴型同步技术
- 传奇背词 商业经济类第一篇 消费者该怎么做?
- GYctf-BFnote IO_FILE还可以这样利用
- R语言data.table详解
- 初心易得, 始终难守
- 基于QT的网络视频会议系统---KNVM
- 技嘉z97 服务器系统,BIOS界面再升级:Startup导航简单好用_技嘉 G1.Sniper Z97_主板评测-中关村在线...
- 快播王欣首次公开狱中信件:每天看书,因害怕与外界脱节
热门文章
- 投融界:创业路上,有项目如何找投资人
- 个人所得税每个月都已经缴纳了,为什么年收入超过12万还需要再次申报?
- mysql三叶草_外链代发包收录外链是否有用三叶草带你了解
- Java 匿名类(匿名内部类)
- 华为ct5000瘦客户机_第八集[达特分享]华为CT5000一键刷BIOS安装OpenWRT制作软路由...
- js判断生效时间不得大于失效时间
- 孙溟㠭篆刻《药生尘》——纪念吴孟超院士精神永在
- DFT Compiler极简示例1
- 国内如何购买Google Colab会员
- 计算机考试感受作文,考试的感受作文(集锦15篇)