{
char ch;
cin>>ch;
string str;
getline(cin,str);
}
输入字符ch时既输入了字符ch还输入了换行符,输入缓冲区内存了一个字符和一个回车,ch把字符读取了,而getline正好遇到输入缓冲区内的回车,str为空,而结束了输入。也就是说getline并不忽略行开头的换行符只要遇到换行符getline便停止读入。解决方法:在cin>>ch后面加一句getchar()。
cin遇到空格字符和换行符就停止读入,getline遇到换行符便停止读入。scanf也是遇到空格字符和换行符便停止读入。