-1

これが私が書き込もうとしているコードの一部です:

//Choice Based Menu
#include <iostream.h>
#include <conio.h>
int main()
{
    char choice;
    cout<<"Menu"<<endl<<endl;
    cout<<"A. Option A"<<endl;
    cout<<"B. Option B"<<endl;
    cout<<"C. Option C"<<endl;
    cout<<"Q. Quit"<<endl;
    cout<<endl<<"Choice:\t";
    do
    {
        choice=getch();
        cout<<choice<<"\r";
        switch(choice)
        {
            case 'A':
            {
                cout<<endl<<"Option A!";
                break;
            }
            case 'B':
            {
                cout<<endl<<"Option B!";
                break;
            }
            case 'C':
            {
                cout<<endl<<"Option C!";
                break;
            }
            case 'Q':
            {
                return 0;
            }
            default:
            {
                cout<<endl<<"Invalid Choice! Please try again.";
                break;
            }
        }

    }while(1);
}

ループは無期限に続くため、前に選択したオプションのコードを実行した後、別の入力オプションを待ちます。

Menu

A. Option A
B. Option B
C. Option C
Q. Quit

Choice: A
Option A!

「Choice:A」の行を、最後に入力したオプションで毎回更新したいと思います。そして、以前に選択したオプション(オプションA!)の出力を、新しく選択したオプションの出力に置き換えたいと思います。

お気づきかもしれませんが、「\r」を使ってみました。キャリッジリターンが表示されるため、これは機能しません。つまり、行の先頭に戻ります。行頭ではなく、1文字だけ後ろに移動したい。

4

1 に答える 1

1

これこれ:

#include <iostream.h>
#include <conio.h>
int main()
{
    char choice;
    cout<<"Menu"<<endl<<endl;
    cout<<"A. Option A"<<endl;
    cout<<"B. Option B"<<endl;
    cout<<"C. Option C"<<endl;
    cout<<"Q. Quit"<<endl;
    do
    {
        choice=getch();
        cout << "\r" << "Choice:\t"; // Moved into the loop
        switch(choice)
        {
            case 'A':
            {
                cout << "Option A!"; // No more endl
                break;
            }
            case 'B':
            {
                cout << "Option B!";
                break;
            }
            case 'C':
            {
                cout << "Option C!";
                break;
            }
            case 'Q':
            {
                return 0;
            }
            default:
            {
                cout << "Invalid Choice! Please try again.";
                break;
            }
        }
    }while(1);
    cout << endl; // New sole endl
}

これは正確にはあなたが望むものではありませんが、最小限の手直しで得ることができる最も近いものです。

于 2011-09-27T12:23:40.383 に答える