C++ C++;-等待用户输入,但打印下一行

C++ C++;-等待用户输入,但打印下一行,c++,C++,因此,我正在使用ascci制作GUI,我希望等待用户输入,但打印ascci边框的最后一行。现在,它将等待用户输入,然后打印最后一条ascci边界线。有没有办法解决这个问题 我想要的示例: 登录屏幕 ====================================================== Welcome to Bank Beta 0.1 ------------------------ (1)Login (2)

因此,我正在使用ascci制作GUI,我希望等待用户输入,但打印ascci边框的最后一行。现在,它将等待用户输入,然后打印最后一条ascci边界线。有没有办法解决这个问题

我想要的示例:

登录屏幕

======================================================

        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
        << "\t\tWelcome to Bank Beta 0.1" << endl
        << "\t\t------------------------" << endl << endl
        << "\t\t (1)Login" << endl
        << "\t\t (2)Create Account" << endl << endl;
}
int main()
{ 
    int loginChoice;
    login();
    cin >> loginChoice;
    cout << "======================================================" << endl;
    _getch();
}
void登录()
{

cout由于您使用的是基于控制台的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 
\ifdef\u WIN32
#包括
void gotoxy(整数x,整数y)
{
坐标p={x,y};
设置控制台或位置(GetStdHandle(标准输出句柄),p);
}
#否则
#包括
#包括
void gotoxy(整数x,整数y)
{
INTERR;
如果(!cur_term)
if(setupterm(NULL、标准输出文件号和错误)=err)
返回;
putp(tparm(tigetstr(“cup”)、y、x、0、0、0、0、0、0);
}
#恩迪夫
如果不需要平台独立性,您可以删除其中任何一个,但两者都没有坏处。现在有趣的部分是:

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

添加了cout code后,我重申我已获得输入后的最后一个boarder块,以便在boarder结束前显示输入。将“cin>>LoginCoice”后的行添加到您的登录函数中即可。此外,请注意endl,因为它将刷新您的流。请尝试并使用“\n”直到最后一行,在那里你可以刷新。我想ncurses可以做你想做的事情如果我在我的登录功能中添加cin,它会提示用户,并且在用户输入之前不允许寄宿生打印?std::cin和std::cout是分开的输入和输出流,所以是的,如果你在(c)输入(put)之前“输出(put)”边框用户选择它将得到打印。只需尝试一下:将cin放在所有“couts”之后。注意:如果您试图让用户将其输出放在“底部边框”之上,这将不起作用!!!。代码是连续的,cin“阻止”代码执行。有(不可移植)设置光标位置的方法,但我认为这不值得。如果你试图制作GUI,你最好检查ncurses,如上所述。ncurses似乎也以独立于平台的方式完成这项工作:作为旁注,主要是不是应该是
gotoxy(0,8);
而不是
goto(0,8)是的,Ploutox是对的,我的主要错误是“gotoxy(0,8)”