ほとんどすべてのLinuxオペレーティングシステムで発生するように、ユーザータイプが隠されたままになるように、Windows/Linuxコンソールから入力を受け取ります。 次のスニペットによってスローされた例外を正常に処理するにはどうすればよいですか?例外処理C++
#ifdef _WIN32
HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
DWORD mode = 0;
GetConsoleMode(hStdin, &mode);
SetConsoleMode(hStdin, mode & (~ENABLE_ECHO_INPUT));
std::string sTempPass;
getline(cin, sTempPass);
SetConsoleMode(hStdin, mode);
#elif __linux__
termios oldt;
tcgetattr(STDIN_FILENO, &oldt);
termios newt = oldt;
newt.c_lflag &= ~ECHO;
tcsetattr(STDIN_FILENO, TCSANOW, &newt);
std::string sTempPass;
getline(cin, sTempPass);
tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
上記のスニペットでは、さまざまなタイプの例外が発生する可能性があります。これを行うためのプラットフォームに依存しない方法がありますか?
投稿したコードは例外をスローしません。 –
@ el.pescado: 'getline(cin、sTempPass);'呼び出しがあります。少なくともこれは、出力文字列バッファのサイズ変更のために 'std :: bad_alloc'例外を発生させる可能性があります。コード*は例外をスローすることができます。 – IInspectable
@IInspectableあなたが正しいです。 –