c++ string.find() 返回字符串的长度

c++ string.find() returnes length of the string

嗨,我有点困惑。我的程序使用 TCP 通过网络传输消息。我认为这与我的问题无关。

std::stringstream tmp(buf);

            if (tmp.str().find("\r\n") == std::string::npos ) {
                std::cout << " doesnt have ending char" << std::endl;
            }else{
                std::cout << " position of ending char " << tmp.str().find("\r\n") << std::endl;
            }

当从客户端读取消息时,它被推送到 stringstream。然后我试图找到转义字符,不幸的是 string.find("\r\n") 总是 return 字符串的长度,即使 buf 中不包含“\r\n” .

我正在使用

telnet

测试一下,这个行为有没有可能是telnet引起的?

这是我的终端的输出:

Connected to localhost.
Escape character is '^]'.
200 LOGIN
asdadsgdgsd

这是程序的输出:

3001 PORT NUM 
sent message: asdadsgdgsd  END  
position of ending char 11

在控制台输入然后发送和接收的字符串是

"asdadsgdgsd\r\n"
 012345678901_2_

所以值 11 是正确的