如何删除cin后的行

How to delete a line after cin?

本文关键字:cin 删除 何删除      更新时间:2023-10-16

考虑以下代码:

#include<iostream>
int main() {
char line[256];
std::cin.getline(line, 256);
std::cout << line << std::endl;
}

执行后,无论我们输入什么文本,都会在控制台上显示两次。有没有一种方法可以用稍后的cout覆盖用户输入的文本。

您可以抑制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。

我的答案来自这篇文章从std::cin 读取密码

还显示了一个windows版本。