C++ 函数在给定值之前触发
这个问题的名字可能不好,因为我不知道这里发生了什么。但是我有一个名为C++ 函数在给定值之前触发,c++,getline,stringstream,C++,Getline,Stringstream,这个问题的名字可能不好,因为我不知道这里发生了什么。但是我有一个名为str2int()的函数,它检查用户输入值是否是一个数字。不管出于什么原因,它都会在任何输入之前触发。 这是一个在mymain()中调用的示例: std::stringstringskill; 对于(int i=0;i
str2int()
的函数,它检查用户输入值是否是一个数字。不管出于什么原因,它都会在任何输入之前触发。
这是一个在mymain()中调用的示例:
std::stringstringskill;
对于(int i=0;i<5;i++){
开关(一){
案例0:
cout尝试在getline之后清除缓冲区,以防止缓冲区中的任何值用作输入(可能是换行)
应该解决它。否则,您应该发布其余的代码!在std::getline()之后尝试std::cin.ingore()
?
std::string stringSKILL;
for(int i = 0; i < 5; i++) {
switch(i) {
case 0:
cout <<"\n\nStrength (How strong you are)";
cout <<"\nHow many points (you have " << total_SKILL_points << " left): ";
std::getline(std::cin,stringSKILL);
Strength = str2int(stringSKILL);
if(str2int_i == 0) {
Strength = 0;
i--;
str2int_i++;
break;
// }'s later in program
// Check if user input is a number
int str2int(std::string &str) {
std::stringstream ss(str);
int num;
ss >> num;
if(ss) { // error handling
return num;
}
else {
cout <<"\n\nPlease Enter a Number!";
str2int_i--;
}
}
std::getline(std::cin,stringSKILL);
std::cin.ingore()