#include <windows.h>

class echo_input
{
  HANDLE hStdIn_;
  DWORD mode_;

public:
  explicit echo_input(bool b = true) {
    hStdIn_ = GetStdHandle(STD_INPUT_HANDLE);
    save();
    if (b)
      enable();
    else
      disable();
  }

  ~echo_input() { restore(); }

  void enable() const { SetConsoleMode(hStdIn_, mode_ | ENABLE_ECHO_INPUT); }
  void disable() const { SetConsoleMode(hStdIn_, mode_ & ~ENABLE_ECHO_INPUT); }
  void save() { GetConsoleMode(hStdIn_, &mode_); }
  void restore() const { SetConsoleMode(hStdIn_, mode_); }
};