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 是正确的
嗨,我有点困惑。我的程序使用 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 是正确的