我有这个代码,意思是在终端的登录界面隐藏我的密码。登录后,输入all仍为空白。如何在getline
完成后将其设置为正常,如回到默认状态?
#include <iostream>
#include <string>
#include <termios.h>
#include <unistd.h>
using namespace std;
int main()
{
termios oldt;
tcgetattr(STDIN_FILENO, &oldt);
termios newt = oldt;
newt.c_lflag &= ~ECHO;
tcsetattr(STDIN_FILENO, TCSANOW, &newt);
string s;
getline(cin, s);
return 0;
}//main
答案 0 :(得分:2)
您已经通过get call保存了之前的终端状态;现在您只需使用set调用以与设置新状态相同的方式恢复它:
tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
(对于未来的访客:第二个参数是一个标志,表示将立即进行更改。)