2012-03-11 63 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(); 
}