cin.get()与此cin.getline()的底层区别?
请先看下面一段程序:
#include <iostream>
#include <string>
using namespace std;
int main()
{
char a[5],b[5],c[5];
cout<<"input a:"<<endl;
cin.getline(a,5,'q');
cin.get(b,5,'q');
cin.get(c,5);
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
return 0;
}
---------------------------------------------------------------
假如输入:123456
输出结果是:
1234 //a 的值是:1234
/n //b 的值是:/n ??疑问--为什么是回车
/n //c 的值是:/n ??疑问--为什么是回车
Press any key to continue;
---------------------------------------------------------------
问题:我不明白b和c的值为什么是一个回车??????
我知道:
用getline,则'q'被从缓冲区抛弃
用get,则'q'仍然留在缓冲区
那么当我输入:123456,数据将先存在缓冲区中,当按下回车时,缓冲区里是:123456/n
共7个字符.
cin.getline(a,5,'q');将只读取1234,然后补'\0',而把余下的三个字符56/n全部
"抛弃",此时缓冲区里已经没有任何字符了,那为什么
cin.get(b,5,'q');仍能得到字符/n;
cin.get(c,5,'q');也得到了字符/n;
不知道我的理解是否正确,还请各位高人不吝赐教?
注:我在网上搜这个问题,至少看了100个帖子,仍然没有解决这个问提?我希望高人"同时"能给我一些关于缓冲区原理,写入设备原理等相关方面的解释,谢谢大家!!!