使用cin.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)输入数据时,如果输入字符个数少于其最大个数用换行符停止输入,下一条输入语句依然可以正常输入。

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

上一篇:方法-二论


下一篇:模拟队列