c ++ string.find () возвращает длину строки - PullRequest
0 голосов
/ 15 ноября 2018

Привет, я немного растерялся.Моя программа использует 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;
            }

, когда сообщение читается из клиента, оно передается в поток строки.Затем я пытаюсь найти escape-символ, к сожалению, string.find ("\ r \ n") всегда возвращает длину строки, даже если "\ r \ n" не содержится в буфере.

Iя использую

telnet

для проверки, возможно ли, что такое поведение вызвано telnet?

Это вывод моего терминала:

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

и вывод программы:

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

1 Ответ

0 голосов
/ 15 ноября 2018

Строка, введенная в консоль, затем отправленная и полученная, равна

"asdadsgdgsd\r\n"
 012345678901_2_

Таким образом, значение 11 является правильным

...