考虑以下代码:
#include<iostream>
int main() {
char line[256];
std::cin.getline(line, 256);
std::cout << line << std::endl;
}
执行后,无论输入什么文本,控制台上都会出现两次。有没有一种方法可以用以后cout
个覆盖用户输入的文本。
答案 0 :(得分:0)
您可以取消getline的输出
#include <termios.h>
#include <unistd.h>
#include <iostream>
#include <string>
void SetStdinEcho(bool enable = true) {
struct termios tty;
tcgetattr(STDIN_FILENO, &tty);
if( !enable )
tty.c_lflag &= ~ECHO;
else
tty.c_lflag |= ECHO;
tcsetattr(STDIN_FILENO, TCSANOW, &tty);
}
int main()
{
SetStdinEcho(false);
char line[256];
std::cin.getline(line, 256);
SetStdinEcho(true);
std::cout << intput << std::endl;
return 0;
}
这适用于linux。
我的答案来自这篇帖子Reading a password from std::cin
还有一个Windows版本。