我的程序中的cin无法正常工作。我该如何解决?

时间:2012-12-10 19:55:51

标签: c++ cin

我对cin有些问题。当我输入一个字符而不是整数时,cin不起作用,之后我甚至无法输入新值。我该怎么办?我已经尝试了fflush(stdin)

struct PersonList
{
    Person person;
    PersonList* personListPtr;
};


void addPerson(PersonList*& ptr, int position);
void deletePersonList(PersonList* ptr);




int main()
{
    PersonList* personListPtr = NULL;

    int flag = 0;
    int pos = 0;
    int i;

    while(flag != 27)
    {
        system("cls");
        cout << "1 - add objects\n"
            << "2 - delete objects\n"
            << "ESC - exit\n";
        switch(flag)
        {
        case '1':
            cout << "Enter position: ";
            **cin >> pos;**
            addPerson(personListPtr, pos);
            break;
        case '2':
            break;
        case '3':
            break;
        }
        flag = _getch();
    }


    deletePersonList(personListPtr);

    return 0;
}

感谢。

1 个答案:

答案 0 :(得分:0)

你似乎在混合几个成语。我不知道是什么 _getch()确实如此,但我无法想象无论如何 与std::cin兼容; std::cin会有(或可能有) 例如,预读,阅读你的旗帜角色。您 不能简单地混合来自同一来源的不同流。

至于你描述的特定问题,一旦你进入 一些无法转化为你正在阅读的东西, 流进入错误状态(您应该检查 在使用值之前,所有操作都变为no-ops 直到你清除错误(std::istream::clear())。但那是 不打算解决其他问题。如果你坚持使用 像_getch()之类的东西,那么你将不得不将它用于所有 你的输入,建立一个输入位置的字符串,和 使用std::istringstream进行转换。取决于什么 功能实际上,你可能还要处理事情 像退格一样,进入甚至回声。

相关问题