前几天在回顾数据结构时,创建函数里输入字符,总是无法跳出循环,网上搜到类似
cin.get()、cin.clear()、cin.getline()、cin<<noskipws 等都没有得到想要的解决方案。
事实上,原因在于单次输入后,会有空格或回车进入缓冲区,下次输入会优先读取缓冲区内容。
因此需要加上 cin.ignore(); 用来清除、忽略缓冲区。如下:
while (st!="#")
{
cin>>st;
cout<<"输入字符为:"<<st<<" \n";
cin.clear();
cin.ignore();
}
简单记录下。
cin格式化:
cin<<setw(5)<<data; data占位5个字符
getline(cin, str1); 获取整行字符,遇到\n 结束