现在,当我理解代码是如何工作的时候,我想把它翻译成C++。在</p>
<p>原始Python代码:</p>
<pre><code>def recv_all_until(s, crlf):
data = ""
while data[-len(crlf):] != crlf:
data += s.recv(1)
return data
</code></pre>
<p>我试了一下:</p>
^{pr2}$
<p>但它显示:</p>
<pre><code>terminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::substr
</code></pre>
<p>我知道问题出在<code>while</code>循环中,因为一开始数据字符串是空的。那么,如何改进这一点,使其与在Python中一样工作呢?非常感谢。在</p>
<p>如果我们先稍微修改一下Python代码:</p>
<pre><code>def recv_all_until(s, crlf):
data = ""
while not data.endswith(crlf):
data += s.recv(1)
return data
</code></pre>
<>我们在C++中需要做的事情变得更加清楚:</P>
^{pr2}$