擅长:python、mysql、java
<pre><code>i = iter(lambda: stringio.read(1),'Z')
buf = ''.join(i) + 'Z'
</code></pre>
<p>这里<code>iter</code>在这种模式下使用:<code>iter(callable, sentinel) -> iterator</code>。在</p>
<p><code>''.join(...)</code>相当有效。最后一个添加'Z'<code>''.join(i) + 'Z'</code>的操作不是很好。但可以通过向迭代器添加<code>'Z'</code>来解决:</p>
^{pr2}$
<p>另一种方法是使用生成器:</p>
<pre><code>def take_until_included(stringio):
while True:
s = stringio.read(1)
yield s
if s=='Z':
return
i = take_until_included(stringio)
buf = ''.join(i)
</code></pre>
<hr/>
<p>我做了一些效率测试。所述技术的性能几乎相同:</p>
<p><a href="http://ideone.com/dQGe5" rel="nofollow">http://ideone.com/dQGe5</a></p>