#include <iostream>
#include <string>
#include <sstream> // don't mind this
#include <ctime> //don't mind this either
using namespace std;
int main() {
const string password = "hello"; //password
char word[100]; //if this were string and I put 2 words in my password it would output "invalid password" twice
do {
cin >> word;
cin.getline(word, 100);
if (word == password) { //if word is equal to password, break and move on past the loop
break;
}
cout << "Password invalid" << endl; //password not equal, it will move on to this and repeat until password is true
} while (true);
cout << "Password valid" << endl;
return 0;
}
我已经习惯了几个月的c ++编程新手了,现在我正在看一个非常好的课程。在其中一个教程中,他制作了上面提供的密码程序。我已经玩了一些程序,并注意到当我输入两个单词如“示例密码”时,它会输出两次“无效密码”。我认为这是因为它将空格识别为另一个输入。我做了一些更改,所以现在当我输入2个或更多单词时,它只输出一次无效密码。但现在我面临另一个需要帮助的问题。当我尝试输入正确的密码时,它不起作用。这个谜团的答案可能是什么?帮助将不胜感激,这可以帮助我和其他人更多地了解这一点,并帮助避免将来出现这个问题。
答案 0 :(得分:1)
我很高兴我已经解决了你的问题,但让我详细说明我之前所说的内容,因为这对学习很有帮助。
scanf("%[^\n]%*c", string );
这里[^ \ n]是scanf函数的scanset说明符,它意味着scanf函数扫描stdin中的字符,直到它到达换行符。这基本上是一个c函数。
cpp中的parallel是getline(stream,char *)函数,但几乎所有c代码都在c ++中工作,因此你可以使用它。