Наличие двух консольных выходов одновременно, когда они разделены входом - PullRequest
0 голосов
/ 11 ноября 2019

Я пытаюсь создать простую страницу входа в C ++. В настоящее время в моей программе вы должны ввести имя пользователя, прежде чем ввод пароля станет доступным. Я хочу иметь возможность показывать оба и иметь возможность вводить один перед другим.

cout << "User:  "; cin >> enteruser;
cout << "Pass:  "; cin >> enterpass;

return 0;

Я хочу, чтобы он был похож на страницу входа в сеть, но в окне консольного приложения c ++.

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

Путь ncurses выглядит примерно так:

#include <ncurses.h>

char userFieldText = "User: ";
char passFieldText = "Pass: ";
char inputUserName[100];
char inputPass[100];
int rowCount;
int columnCount;

initscr();
getmaxyx(stdscr,rowCount,columnCount);
mvprintw(1,1,"%s",userFieldText);
mvprintw(2,1,"%s",passFieldText);
getstr(inputUserName);          // Get input until enter
getstr(inputPass);          // Get input until enter
endwin();

Перефразировано из ncurses docs , смотрите эту ссылку, если вы хотите получить дополнительные описания их библиотечных функций. Вы получаете несколько удобных функций, которые помогут вам пройти через консоль с помощью команды ncurses . Не такой креативный, как в простом C ++, но зависит от того, хотите ли вы получить больше возможностей из библиотеки, например, в будущем.

0 голосов
/ 11 ноября 2019

Вот базовая реализация без использования какой-либо библиотеки и просто с использованием escape-последовательностей, определенных в http://ascii -table.com / ansi-escape-sequence.php для установки позиции курсора.

#include <iostream>
#include <string>
#include <stdio.h>

void cursor_up(int lines)
{
    /* Enter escape sequence */
    printf("%c%c%dA", 0x1b, 0x5b, lines);
}

void cursor_forward(int cols)
{
    /* Enter escape sequence */
    printf("%c%c%dC", 0x1b, 0x5b, cols);
}

int main(int argc, char *argv[])
{
    std::string username;
    std::string passwd;

    std::string user_prompt = "Enter user: "; 
    std::string passwd_prompt = "Enter password: ";

    std::cout << user_prompt << std::endl;
    std::cout << passwd_prompt << std::endl;

    cursor_up(2);
    cursor_forward(user_prompt.length());
    std::cin >> username;

    cursor_forward(passwd_prompt.length());
    std::cin >> passwd;

    return 0;
}
...