私は画面をクリアして次の画面に移動する前に何かを表示しているプログラムを作成しようとしています。私は画面をクリアするためにシステム( "クリア")を使用しています。しかし、私はそれがちょうどスクリーンの速さをあまりにも速くクリアすることに気付いています。つまり、getchar()を実行しても、キーボード入力を待たずに次のコマンドを実行するということです。私は理由を理解することができません!ここで画面をクリアする前にキーボード入力を待つ方法(getchar not working)
は、キーストロークを待つことになっている一時停止マクロのための私のコードです:
#define pause() \
do{ \
cout<<"Press any key to continue";\
getchar();\
} while(0);
そしてここでは、上記のマクロを使用するコードが、以下のコードキーが押されるのを待つしないのです画面をクリアする前に!
void registerUser()
{
string uid,passwd;
cout <<"Enter UID: ";
cin >> uid;
cout<<" Enter Password: ";
cin>>passwd;
bool ret = addUser(uid,passwd);
if (ret == false)
{
cout<<"User "<< uid <<" already exists\n"; // This message is not displayed
}
else
{
cout<<"User " << uid <<" Successfully added\n"; // This message is not displayed
}
pause(); // Program does not wait here as expected
system("clear"); // Screen is cleared immediately !!
}
なぜインラインを使用しないのですか?マクロはこのための良いツールではありません –