等待用户输入,但打印下一行

C++ - Wait for user input but print the next line

本文关键字:一行 打印 用户 输入 等待      更新时间:2023-10-16

所以我用ascci制作GUI,我想等待用户输入,但打印ascci边界的最后一行。到目前为止,它将等待用户输入,然后打印最后一个ascii边界行。有办法解决这个问题吗?

我想要的例子:

登录屏幕

======================================================
        Welcome to Bank Beta 0.1
        ------------------------
        (1)Login
        (2)Create Account

        USER INPUT HERE
======================================================

我得到的例子:

======================================================
        Welcome to Bank Beta 0.1
        ------------------------
        (1)Login
        (2)Create Account

        USER INPUT HERE

下面是我的代码:

void login ()
{
    cout << "======================================================" << endl
        << "ttWelcome to Bank Beta 0.1" << endl
        << "tt------------------------" << endl << endl
        << "tt (1)Login" << endl
        << "tt (2)Create Account" << endl << endl;
}
int main()
{ 
    int loginChoice;
    login();
    cin >> loginChoice;
    cout << "======================================================" << endl;
    _getch();
}

既然你是在一个基于控制台的GUI上工作,我建议使用某种光标移动功能。这也会为你在对齐"对象"上节省很多时间。

下面是win和unix中移动光标所需的代码

#ifdef _WIN32
    #include <windows.h>
    void gotoxy(int x, int y)
    {
        COORD p = { x, y };
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), p);
    }
    #else
    #include <unistd.h>
    #include <term.h>
    void gotoxy(int x, int y)
    {
        int err;
        if (!cur_term)
        if (setupterm(NULL, STDOUT_FILENO, &err) == ERR)
            return;
        putp(tparm(tigetstr("cup"), y, x, 0, 0, 0, 0, 0, 0, 0));
    }
#endif 

如果您不需要平台独立性,可以删除它们中的任何一个,但是同时拥有它们并没有害处。现在是有趣的部分:

void login ()
{
    cout << "======================================================" << "n"
    << "ttWelcome to Bank Beta 0.1" << "n"
    << "tt------------------------" << "nn"
    << "tt (1)Login" << "n"
    << "tt (2)Create Account" << "nn";
    gotoxy(0, 7);
    cout << "======================================================" << "n";
    gotoxy(0, 6);
    cout << "tt";
}
int main()
{ 
    int loginChoice;
    login();
    gotoxy(0,8);
    cin >> loginChoice;
    _getch();
}

现在的书写和阅读是相互独立的,你也可以更容易地乱搞所有的位置