PAT乙1067 關於空格輸入 gets getline(cin,c) (string c)

NO IMAGE
1067 試密碼(20 分)提問
當你試圖登入某個系統卻忘了密碼時,系統一般只會允許你嘗試有限多次,當超出允許次數時,賬號就會被鎖死。本題就請你實現這個小功能。
輸入格式:
輸入在第一行給出一個密碼(長度不超過 20 的、不包含空格、Tab、回車的非空字串)和一個正整數 N(≤ 10),分別是正確的密碼和系統允許嘗試的次數。隨後每行給出一個以回車結束的非空字串,是使用者嘗試輸入的密碼。輸入保證至少有一次嘗試。當讀到一行只有單個 # 字元時,輸入結束,並且這一行不是使用者的輸入。
輸出格式:
對使用者的每個輸入,如果是正確的密碼且嘗試次數不超過 N,則在一行中輸出 Welcome in,並結束程式;如果是錯誤的,則在一行中按格式輸出 Wrong password: 使用者輸入的錯誤密碼;當錯誤嘗試達到 N 次時,再輸出一行 Account locked,並結束程式。
輸入樣例 1:
Correct%pw 3
correct%pw
[email protected]
whatisthepassword!
Correct%pw
#
輸出樣例 1:
Wrong password: correct%pw
Wrong password: [email protected]
Wrong password: whatisthepassword!
Account locked
輸入樣例 2:
[email protected] 3
[email protected]
[email protected]
[email protected]
try again
#
輸出樣例 2:
Wrong password: [email protected]
Wrong password: [email protected]
Welcome in
  • gets可以輸入空格,但是gcc解釋
  • 用getline(cin,c);
  • 最後錯在不是b[0]==’#’而是b==”#”…….
#include<iostream>
#include<cstring>
using namespace std;
string a,b;
int c;
int main()
{
cin>>a>>c;
getchar();
while(c--)
{
getline(cin,b);
if(b=="#")return 0;
else if(a==b)
{
cout<<"Welcome in"<<endl;
return 0;
}
else cout<<"Wrong password: "<<b<<endl;
}
cout<<"Account locked"<<endl;
return 0;
}