簡體   English   中英

為什么使用 cin.clear() 沒有清除輸入?

[英]Why the input is not cleared by using cin.clear()?

我正在將值添加到程序並將其打印回以檢查存儲了哪些值,但在打印值之前我希望清除 cin 並打印列表為空。 問題是它仍然打印保存的列表並且沒有用cin.clear()反映如何實現它? 如果我沒有錯,我認為我沒有以正確的方式做這件事。

編碼:

#include <iostream>
#include <vector>
#include <limits>
using namespace std;

int main()
{
    vector <int> number{};
    char selection{};

    do{
        cout << "\nMain Menu" << '\n';
        cout << "P - Print numbers" << '\n';
        cout << "A - Add numbers" << '\n';
        cout << "M - Show the medium number" << '\n';
        cout << "S - Show small number" << '\n';
        cout << "L - Show large number" << '\n';
        cout << "Q - Quite the program" << '\n';
        cout << "------------------------" << '\n';
        cout << "Enter your Choice: ";
        cin >> selection;

        if(selection == 'p' || selection == 'P')
        {
                cin.clear();
            {
                if (number.size() == 0)
                    cout << "[] - The list is Empty" << '\n';
                else{
                    cout << " [ ";
                    for(int num:number)
                        cout << num << " ";
                    cout << " ] " << '\n';
                }
            }
        }else if(selection == 'a' || selection == 'A')
            {
                int num_to_add{};
                cout << "Enter the number to add: ";
                cin >> num_to_add;
                number.push_back(num_to_add);
                cout << num_to_add << " Successfully Added" << '\n';
                cin.clear();
            }else if(selection == 'm' || selection == 'M')
                {
                    if (number.size() == 0)
                    cout << "[] - The list is Empty, unable to calculate" << '\n';
                    else{
                        int total{};
                        for(int num:number)
                            total += num;
                        cout << "The middle number is: " <<static_cast<float>(total)/number.size() << '\n';
                    }
                }else if(selection == 's' || selection == 'S')
                    {
                        if (number.size() == 0)
                        cout << "[] - The list is Empty, unable to retrieve smaller value" << '\n';
                        else{
                            int smallest = number.at(0);
                            for(int num:number)
                                if(num < smallest)
                                smallest = num;
                            cout << "The smallest number is: " << smallest << '\n';
                        }
                    }else if(selection == 'l' || selection == 'L')
                    {
                        if (number.size() == 0)
                        cout << "[] - The list is Empty, unable to retrieve larger value" << '\n';
                        else{
                            int larger = number.at(0);
                            for(int num:number)
                                if(num > larger)
                                larger = num;
                            cout << "The larger number is: " << larger << '\n';
                        }
                    }
    }while (selection != 'q' && selection != 'Q');
    return 0;
}

您的數據存儲在vector < int > number{} 中; 當您需要清空存儲的數據時,您可以通過簡單地說number.clear()來清除數字。

更多解釋:只需運行我的代碼,添加數字,按 c 清除,然后檢查您的列表。

#include <iostream>
#include <limits>
#include <vector>

using namespace std;

void mainMenu();
void dataValidation();
void CalcuLation();
void outPuts();


int main()
{
    dataValidation();
    return 0;
}

void dataValidation()
{
    int bad_index = 0;
    string Uinput;
    cout << "Enter the number only to check if You are not a bot: ";
    cin >> Uinput;
    bool isvalid_ = true;
    if(Uinput[0] == '0')
    {
        isvalid_ = false;
        cout << "Oops! Entering Zero is not allowed. Try again with correct number." << '\n';
        return ;
    }
    for (int countingPoint = 0; countingPoint < Uinput.length() && isvalid_; countingPoint++)
    {
        if (!(Uinput [countingPoint] >= 48 && Uinput[countingPoint] <= 57))
        {
            isvalid_ = false;
            cout << "Not Success" << '\n';
            bad_index = countingPoint;
            break;
        }
    }
    if(isvalid_)
    {
    int userChoice_;
    char restart_;
    do{
    system("cls");
    cout << "Thank you for Entering the correct number to solve bot captcha..." << '\n';
    cout << "-----------------------------------------------------------------" << '\n';
    mainMenu();
    cout<< " Enter the Choice: ";
    while (!(cin>>userChoice_))
    {
        system("cls");
        cin.clear();
        cin.ignore(numeric_limits<streamsize>:: max(), '\n');
        system("cls");
        cout<< " Wrong choice detected! Illegal stance stopped! Try again." << '\n';
        cout<< " *********************************************************" << '\n';
        mainMenu();
        cout<< " Enter the Choice: ";
    }
    do{
        cin.clear();
        cout << " Do you want to Restart the App? [Y/n] " ;
        cin >> restart_;
        system("cls");
        mainMenu();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');

        }while (restart_!='Y'&&restart_!='y'&&restart_!='N'&&restart_!='n');
    }while (restart_ == 'Y' || restart_ == 'y');
    return;
}
    else
        cout << "Value Entered: ["<< Uinput[bad_index] << "] is illegal which is not a number. Try again with a correct number." << '\n';
}

void mainMenu()
{
    cout << "Main Menu" << '\n';
    cout << "A for Adding Numbers" << '\n';
    cout << "P for Printing Saved numbers" << '\n';
    cout << "S for Printing Saved numbers" << '\n';
    cout << "L for Printing Saved numbers" << '\n';
    cout << "C to to clear the saved list" << '\n';
    cout << "Q to Quite the Program" << '\n';
    cout << "Enter your Choice: ";
    CalcuLation();
}

void CalcuLation()
{
    vector <int> number{};
    vector <int> Emptynumber{0};
    char selection{};

    do{
        cin >> selection;
        if(selection == 'p' || selection == 'P')
            {
                if (number.size() == 0)
                    cout << "[] - The list is Empty" << '\n';
                else{
                    cout << " [ ";
                    for(int num:number)
                        cout << num << " ";
                    cout << " ] " << '\n';
                }
        }else if(selection == 'a' || selection == 'A')
            {
                int num_to_add{};
                cout << "Enter the number to add: ";
                cin >> num_to_add;
                number.push_back(num_to_add);
                cout << num_to_add << " Successfully Added" << '\n';
            }else if(selection == 'm' || selection == 'M')
                {
                    if (number.size() == 0)
                    cout << "[] - The list is Empty, unable to calculate" << '\n';
                    else{
                        double total{};
                        for(double num:number)
                            total += num;
                        cout << "The middle number is: " <<static_cast<int>(total)/number.size() << '\n';
                    }
                }else if(selection == 's' || selection == 'S')
                    {
                        if (number.size() == 0)
                        cout << "[] - The list is Empty, unable to retrieve smaller value" << '\n';
                        else{
                            int smallest = number.at(0);
                            for(int num:number)
                                if(num < smallest)
                                smallest = num;
                            cout << "The smallest number is: " << smallest << '\n';
                        }
                    }else if(selection == 'l' || selection == 'L')
                    {
                        if (number.size() == 0)
                        cout << "[] - The list is Empty, unable to retrieve larger value" << '\n';
                        else{
                            int larger = number.at(0);
                            for(int num:number)
                                if(num > larger)
                                larger = num;
                            cout << "The larger number is: " << larger << '\n';
                        }
                    }else if(selection == 'C' || selection == 'c')
                    {
                        if (number.size() == 0)
                        cout << "[] - The list is Already Empty, Can't be Cleared" << '\n';
                        else{
                            number.push_back(0);
                            number.clear();
                            cout << " Successfully Cleared" << '\n';
                            cout << " The list is Empty " << '\n';
                        }
                    }
    }while (selection != 'q' && selection != 'Q');
    return;
}

暫無
暫無

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

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