是否可以在不逐行缓存输入的情况下从io :: stdin()读取字符?

问题描述 投票:3回答:2

此问题指的是稳定的Rust版本1.2.0

我只想遍历CLI应用程序标准输入中的字符。完全有可能将stdinread_line方法读入一个临时String实例,然后对其chars()迭代器进行迭代。

但是我不喜欢这种方法,因为它分配了完全不必要的String对象。Stdintrait的文档实现了Read trait,which has chars()迭代器,但将其标记为不稳定的(因此不能与稳定的编译器版本一起使用。)>

是否有一种替代的,可能不太明显的方式来逐个读取stdin字符,而没有任何额外的Rust侧缓冲?

此问题涉及稳定的Rust版本1.2.0,我只想遍历CLI应用程序标准输入中的字符。完全有可能读取标准输入的read_line ...

string rust stdin
2个回答
4
投票

您可以通过具有一个单字节数组,然后继续读取直到Result变为Err来执行此操作。但是,这有一个问题,因为如果您不读取ASCII字符,这可能会变成问题。如果您要解决此问题,最好分配一个String并使用chars迭代器,因为它可以解决此问题。


4
投票
对于您可能关心的情况,

XAMPPRocky's answer是正确的,ASCII字符

© www.soinside.com 2019 - 2024. All rights reserved.