2012-03-11 69 views
1
 #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(); 
       } 

当我输入正确的时候应该说你好造物主,但它只会失效,我认为也许只有1 char这就是为什么在第23行我看起来是什么存储在char用户名和密码,但一切都很好。那么为什么需要Else {...}句子?C++字符或逻辑运算符?为什么需要{...}如果正确?

+4

使用的std :: string字符串comparisation – 2012-03-11 19:07:47

回答

7

在C++中有两种类型的字符串。您用于usernamepassword的种类是old-style C strings。它们基本上是内存中的一系列字符,由特殊字符'\0'终止。因为它们来自旧C,所以你不能使用诸如比较或赋值操作符之类的东西。

要比较两个老式的C字符串,你必须使用strcmp功能:

if (strcmp(username, "user") == 0) 
{ 
    // username == "user" 
} 

一个更好的解决方案是使用新的C++ string类:std::string相反,因为它有内置了更多的功能例如处理比较。

+6

和往常一样,通过 “新的C++字符串类” 你实际上指的是 “超过10岁的C++字符串类。” – 2012-03-11 19:22:03

0

您正试图将char[]char*进行比较。这是做一个指针比较而不是字符串比较,因此你得到一个错误,因为它们是一个不同的指针地址。使用std::stringusernamepassword,然后你会得到你期待

std::string username; 
std::string password; 
0

的比较,我相信这个问题是在比较。要比较字符数组,您需要使用像strcmp这样的函数来比较字符数组的内容。如果我没有记错,我相信你在比较指针,而不是字符数组的内容,其中之一是引号内的项目(如“用户”或“Qwerty”)。

我会建议使用std:string来设计使用==(作为运算符)来比较项目,我认为你会发现它的工作原理要好得多,并且更易于使用字符串信息。

1

当你在c中编码时,strcmp是可以的。强烈建议您在C++中使用字符串。

#include <iostream> 

int main() 
{ 
    std::string username;     
    std::string password;                                        
    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"; 
    } 
    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(); 
}