MST

星途 面试题库

面试题:Rust标准输入输出流的复杂处理

假设你需要处理一个包含多行整数的标准输入,每行可能存在多个整数,整数之间用空格分隔。请编写Rust代码,将每行中的整数读取并求和,然后将每行的和依次输出到标准输出。同时,处理过程中要正确处理输入格式错误(比如非数字字符),当遇到格式错误时,输出错误提示信息到标准错误流。
22.0万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
use std::io::{self, Read, Write};

fn main() {
    let stdin = io::stdin();
    let mut handle = stdin.lock();
    let mut buffer = String::new();

    let stdout = io::stdout();
    let mut out = stdout.lock();

    while handle.read_line(&mut buffer).unwrap() > 0 {
        let numbers: Result<Vec<i32>, _> = buffer
          .trim()
          .split_whitespace()
          .map(|s| s.parse())
          .collect();

        match numbers {
            Ok(nums) => {
                let sum = nums.iter().sum::<i32>();
                writeln!(out, "{}", sum).unwrap();
            }
            Err(e) => {
                eprintln!("Format error: {}", e);
            }
        }

        buffer.clear();
    }
}