2

端末のログイン画面でパスワードを非表示にするためのこのコードがあります。ログイン後、入力はすべて空白のままです。完了後にデフォルトに戻すなど、通常に設定するにはどうすればよい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 
4

1 に答える 1

2

get 呼び出しを使用して、以前の端末状態を既に保存しています。新しい状態を設定したのと同じ方法でset呼び出しを使用して復元する必要があります。

tcsetattr(STDIN_FILENO, TCSANOW, &oldt);

(将来の訪問者向け: 2 番目のパラメーターは、変更がすぐに行われることを意味するフラグです。)

于 2013-04-19T18:45:25.887 に答える