坑点一:尝试输入的密码可能包含空格符,所以必须用getline(cin,str)接收一行输入;
坑点二:cin>>str 和getline(cin,str)连用时,中间必须要加getchar()吸收换行符
#include<iostream> using namespace std; int main() { string password,str; int n; cin>>password>>n; getchar();//cin>>str 和getline(cin,str)连用时,中间必须要加getchar()吸收换行符 for(int i = 1; i <= n; ++i) { getline(cin,str);//尝试输入的密码可能包含空格符,所以必须用getline(cin,str)接收一行输入; if(str == "#") break; if(str == password) { printf("Welcome in\n"); break; } else { cout << "Wrong password: " << str << endl; if(i == n) { printf("Account locked\n"); } } } return 0; }