2017-07-23 73 views
0

我是C++新手,已決定了解更多關於C++如何利用套接字的知識。我目前正在關注這個tutorialC++ TCP服務器比較字符串失敗

我想比較兩個字符串。一個字符串是文字,test,另一個是從使用telnet的客戶端接收的。但是,條件語句總是計算爲false,隨後代碼塊從不執行。我錯過了什麼?

這裏是我有問題的代碼:

while((read = recv(sock , client_message , 2000 , 0)) > 0) 
    { 


    std::string a = std::string(client_message); 

    std::string b = std::string("test"); 

    std::cout << "string a" << a << std::endl; 
    std::cout << "string b" << b << std::endl; 


    if (a == "test") { 
     std::cout << "Strings match!"; 
    } 



     write(sock , client_message , strlen(client_message)); 
    } 
+0

a和b的輸出是什麼? (好吧,b應該是「test」) –

+0

'read'的值是多少? –

+0

@TobiasWollgam a的輸出也是「test」。這是令人困惑的。其中一個字符串中是否有某種隱藏的特殊字符? – Us3rname

回答

0

的Telnet將發送CRLF,這將增加兩個額外的字節你client_message陣列。在比較之前,您需要修剪該內容的空白。

此外,代碼std::string b = std::string("test");是多餘的。只要執行std::string b = "test";,或者更好地將其完全移除,因爲無論如何您都沒有真正使用它。