cin不接受输入 - 无限期等待用户输入内容

时间:2017-10-16 00:23:21

标签: c++

See the cursor in console window. I have pressed enter so many times. It just goes 我有一个小型的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(),但没有任何帮助。

1 个答案:

答案 0 :(得分:0)

无法确定您的问题,但似乎cinn正在接受数据并且您提供的数据错误。编写程序的方式,不会处理1或11以外的任何数据,实际上它看起来好像cinn不起作用。如果输入11的问题仍然存在,那么编译器就会出现问题。