cin。getline() 与缓存 区问题

swtch(ch = cin.get())
{
case '1': //
do
{
clear;
system("cls");
hello();
cout << "\ninput name : ";
cin.getline(Temp.Full_name, 30);
clear;
}
while (!is_blank(Temp.Full_name));

                do {
                     //cin.ignore();
                    system("cls");
                    hello();
                     cout << "\ntitle : ";
                     cin.getline(Temp.title, 30);
                     clear;
                    } 
                while (!is_blank(Temp.title));
                

}

为什么输入名字后需要按两下enter 键 才会写入,

cin.clear();
cin.sync();

缓冲区,是你啥时候按下entry啥时候停止缓冲区数据的加入,然后只运行缓冲区的第一个字符。

你可以参考下这篇文章:getline和cin区别;getline和cin.getline的区别【简单易懂】
你还可以看下cpp参考手册中的 c++-getline<>()