将代码从Python翻译成C++

2024-06-20 15:08:54 发布

您现在位置:Python中文网/ 问答频道 /正文

现在,当我理解代码是如何工作的时候,我想把它翻译成C++。在

原始Python代码:

def recv_all_until(s, crlf):
    data = ""
    while data[-len(crlf):] != crlf:
        data += s.recv(1)
    return data

我试了一下:

^{pr2}$

但它显示:

terminate called after throwing an instance of 'std::out_of_range'
  what():  basic_string::substr

我知道问题出在while循环中,因为一开始数据字符串是空的。那么,如何改进这一点,使其与在Python中一样工作呢?非常感谢。在


Tags: of代码datalenreturndefalluntil
2条回答

如果我们先稍微修改一下Python代码:

def recv_all_until(s, crlf):
    data = ""
    while not data.endswith(crlf):
        data += s.recv(1)
    return data
<>我们在C++中需要做的事情变得更加清楚:

^{pr2}$

while循环的第一次迭代中出现问题:

因为data是一个空的stringdata.length()等于0,因此您调用data.substr(-2, 0)。在

要解决这个问题,您需要在while语句中添加一个行长度检查。在

另外,有一种方法可以比写一个stackoverflow问题更快地找到这些错误。考虑阅读this文章。在

相关问题 更多 >