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

C++ password program, encountering problems with 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++ 编程已有几个月了,我现在正在观看一门非常好的课程。在其中一个教程中,他制作了上面显示的密码程序。我玩过这个程序,注意到当我输入 "example password" 之类的 2 个单词时,它会输出 "Invalid password" 两次。我认为这是因为它将空格识别为另一个输入。我做了一些更改,现在当我输入 2 个或更多单词时,它只会输出一次无效密码。但现在我面临另一个需要帮助的问题。当我尝试输入正确的密码时,它不起作用。这个谜团的答案是什么?帮助将不胜感激,这可以帮助我和其他人更多地理解这一点,并有助于在未来避免这个问题。

很高兴我已经解决了你的问题,但是让我把我之前说的详细说一下,因为这对学习有帮助。

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

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

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