C++ C++;getline函数连续循环
我试图在下面的代码中使用getline函数,但是它只是进入了一个不确定的循环。如果我输入1,它将跳转到循环的另一个迭代,并再次询问我的菜单选项,而不是询问我的名字 有人知道我哪里出错了吗C++ C++;getline函数连续循环,c++,C++,我试图在下面的代码中使用getline函数,但是它只是进入了一个不确定的循环。如果我输入1,它将跳转到循环的另一个迭代,并再次询问我的菜单选项,而不是询问我的名字 有人知道我哪里出错了吗 #include <iostream> #include <string> #include <ncurses.h> using namespace std; // DECLARE void menu(); void menu_act_on_choice(); void
#include <iostream>
#include <string>
#include <ncurses.h>
using namespace std;
// DECLARE
void menu();
void menu_act_on_choice();
void string_function();
// CODE
void menu_act_on_choice(int choice_in) {
switch (choice_in) {
case 1:
string_function();
break;
default:
break;
}
}
void string_function() {
string user;
cout << "Enter your first and last: ";
getline(cin, user);
cout << user << endl;
}
void menu() {
int choice = 0;
do {
cout << "1. String functions" << endl;
cout << "2. Array functions" << endl;
cout << "3. Exit" << endl;
cout << "Enter choice: ";
cin >> choice;
menu_act_on_choice(choice);
} while(choice != 3);
}
//EXECUTE
int main() {
menu();
}
#包括
#包括
#包括
使用名称空间std;
//申报
无效菜单();
无效菜单操作选项();
空字符串_函数();
//代码
无效菜单按选项操作(整数选项按){
开关(选择_in){
案例1:
字符串_函数();
打破
违约:
打破
}
}
空字符串_函数(){
字符串用户;
无法在getline行之前添加cin.ignore();
。在getline行之前添加cin.ignore();
。当您输入由
cin >> choice;
你用回车键结束了,对吗
该回车键将作为换行符添加到输入缓冲区。但是,cin>>choice
将不会读取它,相反,getline
调用会将其读取为空行
简单的解决方案是在获得菜单选项后,在换行之前(包括!)输入所有内容
cin >> choice;
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
cin>>选择;
cin.ignore(std::numeric_limits::max(),'\n');
当您输入由读取的菜单选项时
cin >> choice;
你用回车键结束了,对吗
该回车键将作为换行符添加到输入缓冲区。但是,cin>>choice
将不会读取它,相反,getline
调用会将其读取为空行
简单的解决方案是在获得菜单选项后,在换行之前(包括!)输入所有内容
cin >> choice;
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
cin>>选择;
cin.ignore(std::numeric_limits::max(),'\n');
答案正确识别了代码中的第一个问题。但是,这不是唯一的问题:尝试在菜单提示下输入一个单词,而不是一个数字,然后观察发生了什么。答案正确识别了代码中的第一个问题。然而,这不是唯一的问题:尝试在菜单提示下输入一个单词,而不是一个数字,然后看看会发生什么。很好用。谢谢。很好用。谢谢。