我試圖讀取一個密碼,而我讀它時,顯示* *。C++密碼字段
cout << "\n Insert password : ";
loop1:
string passw1 = "";
char ch = _getch();
while (ch != 13) // enter = char 13
{
if (!isalnum(ch))
{
cout << "\n\n Invalid character! Please insert the password again! ";
goto loop1;
}
passw1.push_back(ch);
cout << "*";
ch = _getch();
}
如果我按例如,BACKSPACE或空格或非alpha數值的東西,一切都按計劃進行。問題是當我按下任何F鍵或DELETE,HOME,INSERT,END,PG UP,PG DOWN時,程序崩潰。你能幫我避免碰撞嗎?如果按下無效鍵,我想顯示一條錯誤消息,而不是讓我的程序崩潰。
的問題是,'Del','Home'等不產生在首位字符 - 它們是移動的控制命令光標,就像箭頭鍵一樣。但是,您逐字讀取輸入字符,因此您無法使用它們來編輯當前正在寫入的行。這就是爲什麼他們不適合你的程序。 – 2011-12-30 17:33:22
重新思考這個循環,'goto'在這裏既不需要也不是一個好主意 - 你在循環對象初始化 - 不知道這是否合法。 – Mat 2011-12-30 17:35:27
您能否提供有關您的環境的其他信息?我使用MSVC 10在Windows 7上運行此代碼,但未看到任何崩潰。 – DRH 2011-12-30 17:36:10