我有以下代码:
int choice = 0;
char st1[N];
cout << "enter choice" <<endl;
cin >> choice;
cout << "enter sentence" << endl;
cin.get(st1, N-1);
前往cin.get线,无论输入什么的时候,它会读取\ 0焦炭引入ST1 [0],就是这样。
我认为它是与最新的CIN(进入选择变量)。
如何从用户获得新的输入之前我“干净”的CIN缓冲区? 如果可能的话。
谢谢
您可以使用不理砸从缓冲区中的换行符(如换行分隔符为前降X字符)。 提取并提取分隔符时,忽略停止。
如
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
同时相关: 为什么我们称之为读取输入后cin.clear()和cin.ignore()?
做getchar()
后cin >> choice;
。 这将消耗\n
从输入缓冲器。
由于choice
的类型为int
,将\n
在缓冲区遗留下来的,并采取了字符串输入的时候,这个\n
遇到,并停止服用输入那里。