我有一个小型的C ++程序,根据用户从显示列表中提供的输入执行很少的功能。它显示了该程序将执行的函数列表(现在只有1个函数用于显示)。用户在显示列表中输入表示功能编号的整数。据此继续。我在用户输入整数时遇到问题。输入整数并按回车键后,它就不会继续;并无限地等待。输入一些整数后,没有任何事情可以选择'选择您的选择:'然后按回车键。它只是继续下一行等待一些输入。
#include <iostream>
#include <string>
using namespace std;
static void reverseString(string &str);
static void swap(string &str, int i, int j);
int main() {
int choice;
do {
cout << "1) Print k lines from file" << endl;
cout << "11) Exit" << endl << endl;
cout << "Select your choice: "; // Program infinitely waits here for user.
cin >> choice;
if(choice == 1) {
string word;
cout << "Enter a word: ";
cin >> word;
cout << endl << "You entered '" << word << "'." << endl;
reverseString(word);
cout << endl << "Your reversed string is '" << word << "'." << endl;
}
} while(choice != 11);
return 0;
}
static void reverseString(string &str) {
int i = 0, j = 0;
while(str[j] != '\0') j++;
j--;
while(j > i) {
swap(str, i, j);
i++;
j--;
}
}
static void swap(string &str, int i, int j) {
char temp = str[i];
str[i] = str[j];
str[j] = temp;
}
请帮帮我。我找不到原因。我尝试了cin.clear()和cin.ignore(),但没有任何帮助。
答案 0 :(得分:0)
无法确定您的问题,但似乎cinn正在接受数据并且您提供的数据错误。编写程序的方式,不会处理1或11以外的任何数据,实际上它看起来好像cinn不起作用。如果输入11的问题仍然存在,那么编译器就会出现问题。