关于cin函数有关问题。本人刚刚学c++

关于cin函数问题。本人刚刚学c++
#include <iostream>
using namespace std;
int main()
{
   char str[8];
   cin.getline(str, 5);
   cout<<str<<endl;
   cin.getline(str, 5);
   cout<<str<<endl;
   return 0;
}

测试:

abcdefgh (回车)

abcd (输出)

(输出-换行)
大虾。请问,不是getline.会把换行符丢弃吗。不是读取剩余缓冲区的吗。我以为是abcd efgh,求解答
------解决方案--------------------
cin.getline(str, 5/*此处表示要读取的字符个数4个字符加上一个换行,应该是这样,或者我认为是abcde呀?*/);

------解决方案--------------------
给你推荐一本大师的入门书籍《21天学通c++》利·伯第写的,很适合入门到中级,我就是看着它过来的,如果需要可以低价转给你^..^。
------解决方案--------------------
引用:
#include <iostream>
using namespace std;
int main()
{
   char str[8];
   cin.getline(str, 5);
   cout<<str<<endl;
   cin.getline(str, 5);
   cout<<str<<endl;
   return 0;
}

测试:

abcdefgh (回车)

abcd (输出)

(输出-换行)
大虾。请问,不是getline.会把换行符丢弃吗。不是读取剩余缓冲区的吗。我以为是abcd efgh,求解答

这是读取一行,你一行只取N个字符,下一次getline是下一行了。
------解决方案--------------------
意思就是,人家给了你一行,但是你只要N个字符。
你下一次要的时候,人家已经给下一行的内容了。
------解决方案--------------------
cin.getline以str为存放位置,依次向后存放读取到的字符,直到读满N-1个,或者遇到指定的结束符为止。若不指定结束符,则默认结束符为'\n'。

也就是说要么遇到若输入不够,遇到'\n'结束, 若输入大于读取的长度,读取N-1个,并在最后位置添加'\0'. 所以这里读取4个字符