C++ TCP 服务器比较字符串失败

标签 c++ linux string sockets networking

我是 C++ 的新手,决定学习更多有关 C++ 如何利用套接字的信息。我目前正在关注这个 tutorial .

我正在尝试比较两个字符串。一个字符串是文字,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));
    }

最佳答案

Telnet 将发送 CRLF,这将向您的 client_message 数组添加两个额外的字节。在比较之前,您需要从该内容中删除空格。

此外,代码 std::string b = std::string("test"); 是多余的。只需执行 std::string b = "test";,或者更好的是将其完全删除,因为无论如何您并没有真正在比较中使用它。

关于C++ TCP 服务器比较字符串失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45265062/

相关文章:

c++ - 我应该在这个问题上使用内联还是#define?

C++、Qt、防止窗口调整大小超过实际布局高度

c++ - 解析/proc/文件是否安全?

regex - 删除 key :value pair from json file using shell script

linux - 如何在 ubuntu 中隐藏 "find"命令的详细信息?

c++ - 如何将字符串转换为缩写形式?

c++ - 内存与无理数与 float

c++ - 未使用的变量和函数的链接器错误

c++ - 将字符串(二进制)转换为整数

r - R按符号分割字符串