簡體   English   中英

cin在我的程序中無法正常工作。 我該如何解決?

[英]cin in my program doesn't work properly. How can I fix it?

我的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;
}

謝謝。

您似乎混合了一些習慣用法。 我不知道_getch()作用,但是我無法想象它與std::cin兼容; std::cinstd::cin (或可能已經)閱讀,例如閱讀您的標志字符。 您不能簡單地混合來自同一來源的不同流。

至於您描述的特定問題,一旦輸入了無法轉換為您正在讀取的內容,流就會進入錯誤狀態(在使用該值之前應檢查該錯誤狀態),並且對它的所有操作都將變為-直到您清除錯誤( std::istream::clear() )。 但這並不能解決其他問題。 如果您堅持使用_getch()類的東西,則必須將其用於所有輸入,為位置的輸入建立一個字符串,並使用std::istringstream進行轉換。 根據函數的實際作用,您可能還必須處理諸如退格,輸入甚至回聲之類的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM