我是 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/