c++中getline的问题 求教

#include
#include
#include
int main()
{
using namespace std;
char charr[20];
string str;

cout << "Length of string in charr befor input: "
     << strlen(charr) << endl;
cout << "Length of string in str befor input: "
     << str.size() << endl;
cout << "Enter a line of text:\n";
cin.getline(charr,20);
cout << "You enter : " << charr << endl;
cout << "Enter another line of text:\n";
getline(cin,str);
cout << "You enter: " << str << endl;
cout << "Length of string in charr after input: "
     << strlen(charr) << endl;
cout << "Length of string in str after input: "
     << str.size() << endl;
return 0;

}

为什么到了 getline(cin,str);那一行的时候要按下两次回车?

复制你的代码用我的VS2005运行,只要一次回车就出结果了,你用的什么编译运行?

今天敲代码用了getline,发现程序崩溃了;
调试之后发现循环下,第二次getline直接刷过了。。
问题代码:
while (true) {
getline(cin, name);
if (name == "quit")
break;
cin >> rate;
v.push_back(lesson(rate, name));

}

原因:
怀疑是ci......
答案就在这里:c++ Getline()的问题
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?