当被输入分隔时,同时显示 2 个控制台输出
Having 2 console outputs show at the same time when separated by an input
我正在尝试用 C++ 创建一个简单的登录页面。目前,在我的程序中,您必须在密码输入可用之前输入用户名。我希望能够同时显示两者并可以选择先输入一个。
cout << "User: "; cin >> enteruser;
cout << "Pass: "; cin >> enterpass;
return 0;
我希望它类似于 Web 登录页面,但在 C++ 控制台应用程序中 window。
这是一个基本实现,不使用任何库,只使用 http://ascii-table.com/ansi-escape-sequences.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;
}
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,如果您想进一步了解其库函数,请参阅此 link。你会得到一些方便的函数,帮助你使用类似 ncurses 的东西遍历控制台。不像纯 C++ 那样有创意,但取决于您是否希望像它一样从库中获得更多功能。
我正在尝试用 C++ 创建一个简单的登录页面。目前,在我的程序中,您必须在密码输入可用之前输入用户名。我希望能够同时显示两者并可以选择先输入一个。
cout << "User: "; cin >> enteruser;
cout << "Pass: "; cin >> enterpass;
return 0;
我希望它类似于 Web 登录页面,但在 C++ 控制台应用程序中 window。
这是一个基本实现,不使用任何库,只使用 http://ascii-table.com/ansi-escape-sequences.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;
}
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,如果您想进一步了解其库函数,请参阅此 link。你会得到一些方便的函数,帮助你使用类似 ncurses 的东西遍历控制台。不像纯 C++ 那样有创意,但取决于您是否希望像它一样从库中获得更多功能。