每当我尝试运行此代码时:
string title;
int Choice;
cout<<"1. Insert new term ";
cin>>Choice;
if (Choice==1)
{
getline(cin,title);
}
程序只读取选择并结束整个过程:/,请帮助:D
答案 0 :(得分:1)
cin>>Choice;
将尾随换行符留在输入缓冲区中。而且getline(cin,title);
读取空行。
通常,最好不要将格式化输入与getline
混合在同一个流中。
快速简便的解决方法是使用std::basic_istream::ignore
从流中删除尾随的换行符,如下所示:
cin.ignore(2, '\n');
答案 1 :(得分:0)
在此声明之后
cin>>Choice;
输入缓冲区将包含按Enter键的新行字符。
所以getline
if (Choice==1)
{
getline(cin,title);
读取空字符串,直到遇到新行字符。
在此声明之前插入以下调用
#include <limits>
//...
{
getline(cin,title);
std::cin.ignore( std::numeric_limits<std::streamsize>::max(), '\n' );
清除缓冲区。