C ++密码程序,遇到空格问题

时间:2017-06-30 16:29:02

标签: string visual-c++ char passwords spaces

    #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个或更多单词时,它只输出一次无效密码。但现在我面临另一个需要帮助的问题。当我尝试输入正确的密码时,它不起作用。这个谜团的答案可能是什么?帮助将不胜感激,这可以帮助我和其他人更多地了解这一点,并帮助避免将来出现这个问题。

1 个答案:

答案 0 :(得分:1)

我很高兴我已经解决了你的问题,但让我详细说明我之前所说的内容,因为这对学习很有帮助。

scanf("%[^\n]%*c", string );

这里[^ \ n]是scanf函数的scanset说明符,它意味着scanf函数扫描stdin中的字符,直到它到达换行符。这基本上是一个c函数。

cpp中的parallel是getline(stream,char *)函数,但几乎所有c代码都在c ++中工作,因此你可以使用它。