ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

使用cin.getline()的一点发现

2022-01-25 21:07:13  阅读:152  来源: 互联网

标签:10 s1 cin test 一点 getline 输入


#include <iostream>
#include <fstream>
using namespace std;
int main()
{
	char s1[100],b[13];
	cout << "getline(s1,10):";
	cin.getline(s1, 10);
	cout << "s1: "<<s1 << endl;
	cin>>b;
	cout << "b: "<<b;
}

如上代码运行时,输入:test a program 结果如下

getline(s1,10):test a program
s1: test a pr
b:

可以看到在cin语句对应的输入流没有任何分隔符的情况下,b没有获得任何数据输入。

但当将

cin.getline(s1,10);

改为

cin.get(s1,10);

运行结果如下

getline(s1,10):test a program
s1: test a pr
b: ogram

b成功地获取了数据流中的数据。所以这是否说明getline()会自动给数据流添加分隔符呢?否则是什么阻断了下一行输入语句对数据流的读取?

并且将cin>>b改成get函数或者getline函数都会出现同样的情况,而且当向c.getline(s1,10)输入数据时,如果输入字符个数少于其最大个数用换行符停止输入,下一条输入语句依然可以正常输入。

学习文件操作的时候发现了这个问题,没弄懂,所以提出了自己的一点想法,欢迎大佬指点

标签:10,s1,cin,test,一点,getline,输入
来源: https://blog.csdn.net/m0_60398577/article/details/122691739

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有