#include <iostream>
int main()
{
char username[15];
char password[15];
std::cout << "Hello, please login to continue your action.<Max 15 Char>" << std::endl;
std::cout << "Username: ";
std::cin >> username;
std::cout << "Password: ";
std::cin >> password;
if (username == "User" && password == "qwerty")
{
std::cout << "Hello, creator.";
}
else
{
std::cout << "Invalid Login";
}
/*23 row*/ std::cout << std::endl << std::endl << "Username=" <<username << std::endl << "Password=" << password;
std::cout << std::endl << std::endl << "Press Enter to close the window . . . ";
std::cin.clear();
std::cin.sync();
std::cin.get();
}
Run Code Online (Sandbox Code Playgroud)
当我输入正确时,它应该说Hello Creator但它只会变为无效我认为也许char商店只有1个字符,这就是为什么在23行我接受查看存储在char用户名和密码中但是一切都很好.为什么然后需要Else {...}句子?
C++中有两种类型的字符串.您正在使用的那种username并且password是旧式C字符串.它们基本上是内存中的一系列字符,由特殊字符终止'\0'.由于它们来自旧的C,因此不能使用比较或赋值运算符之类的东西.
要比较两个旧式C字符串,您必须使用以下strcmp功能:
if (strcmp(username, "user") == 0)
{
// username == "user"
}
Run Code Online (Sandbox Code Playgroud)
更好的解决方案是使用新的C++字符串类:std::string相反,因为它内置了更多的功能.例如处理比较.