gpt4 book ai didi

python - 将代码从 Python 翻译成 C++

转载 作者:搜寻专家 更新时间:2023-10-31 01:32:27 26 4
gpt4 key购买 nike

现在,当我了解代码的工作原理时,我想将其翻译成 C++。

原始Python代码:

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

这是我尝试过的:

std::string recv_all_until(int socket, std::string crlf)
{
std::string data = "";
char buffer[1];
memset(buffer, 0, 1);


while(data.substr(data.length()-2, data.length()) != crlf)
{
if ((recv(socket, buffer, 1, 0)) == 0)
{
if (errno != 0)
{
close(socket);
perror("recv");
exit(1);
}
}
data = data + std::string(buffer);
memset(buffer, 0, 1);
}

return data;
}

但它显示:

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

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

最佳答案

您在 while 循环的第一次迭代中遇到了问题:

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

要解决此问题,您需要在 while 语句中添加对行长度的检查。

另外,有一种方法可以比编写有关它的 stackoverflow 问题更快地找到此类错误。考虑阅读 this文章。

关于python - 将代码从 Python 翻译成 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43278168/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com