gpt4 book ai didi

rust - 如何从 stdin 读取具有最大输入长度的行?

转载 作者:行者123 更新时间:2023-11-29 08:15:16 31 4
gpt4 key购买 nike

要从 Stdin 中读取一行,我可以

let mut stdin = std::io::stdin();
let mut input = String::new();
stdin.read_line(&mut input).unwrap();

要从 Stdin 中读取最大长度,我可以这样做

const MAX_LENGTH: u64 = 256;
let mut stdin = std::io::stdin();
let mut input = String::new();
stdin.take(MAX_LENGTH).read(&mut input).unwrap();

我想要的是以上两个要求的结合。从 stdin 读取一行,如果输入的长度超过 MAX_LENGTH,则丢弃剩余部分。

最佳答案

read_line不是 std::io::Read 的成员但是 std::io::BufRead ,同时 stdin确实实现了后者,返回 stdin.take() (类型 std::io::Take<_> )没有。

但是你可以转换任何 Read进入 BufRead轻松使用 std::io::BufReader :

const MAX_LENGTH: u64 = 256;
let mut stdin = std::io::stdin();
let mut input = String::new();
let mut bstdin = std::io::BufReader::new(stdin.take(MAX_LENGTH));
bstdin.read_line(&mut input).unwrap();

关于rust - 如何从 stdin 读取具有最大输入长度的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57565125/

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