#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)输入数据时,如果输入字符个数少于其最大个数用换行符停止输入,下一条输入语句依然可以正常输入。
学习文件操作的时候发现了这个问题,没弄懂,所以提出了自己的一点想法,欢迎大佬指点