Struct std::io::Stdin 1.0.0[−][src]
pub struct Stdin { /* fields omitted */ }
Expand description
进程的标准输入流的句柄。
每个句柄都是对该进程输入数据的全局缓冲区的共享引用。
可以对句柄进行 lock
,以获取对 BufRead
方法 (例如 .lines()
) 的完全访问权限。
否则,将针对其他读取锁定对此句柄的读取。
该句柄实现了 Read
trait,但请注意,必须谨慎执行 Stdin
的并发读取。
由 io::stdin
方法创建。
Note: Windows 可移植性注意事项
在控制台中操作时,此流的 Windows 实现不支持非 UTF-8 字节序列。
尝试读取无效的 UTF-8 字节将返回错误。
Examples
use std::io::{self, Read}; fn main() -> io::Result<()> { let mut buffer = String::new(); let mut stdin = io::stdin(); // 我们在这里得到 `Stdin`。 stdin.read_to_string(&mut buffer)?; Ok(()) }Run
Implementations
锁定此句柄并读取输入行,并将其添加到指定的缓冲区。
有关此方法的详细语义,请参见 BufRead::read_line
上的文档。
Examples
use std::io; let mut input = String::new(); match io::stdin().read_line(&mut input) { Ok(n) => { println!("{} bytes read", n); println!("{}", input); } Err(error) => println!("error: {}", error), }Run
您可以通过以下两种方式之一运行示例:
- 用管道将一些文本发送给它,例如,
printf foo | path/to/executable
- 通过直接运行可执行文件以交互方式输入文本,在这种情况下,它将等待按下 Enter 键,然后继续
将此句柄用于标准输入流,锁定与流相关联的共享缓冲区并返回可读保护。
当返回的守卫作用域解除锁定。
返回的防护还实现了用于访问基础数据的 Read
和 BufRead
traits。
使用 stdin_locked
函数直接获取锁定句柄通常更简单,除非附近的代码也需要使用解锁句柄。
Examples
#![feature(stdio_locked)] use std::io::{self, Read}; fn main() -> io::Result<()> { let mut buffer = String::new(); let mut handle = io::stdin().into_locked(); handle.read_to_string(&mut buffer)?; Ok(()) }Run
使用这个句柄并在输入行上返回一个迭代器。
有关此方法的详细语义,请参见 BufRead::lines
上的文档。
Examples
#![feature(stdin_forwarders)] use std::io; let lines = io::stdin().lines(); for line in lines { println!("got a line: {}", line.unwrap()); }Run
使用此句柄并返回输入字节的迭代器,在指定的字节值处拆分。
有关此方法的详细语义,请参见 BufRead::split
上的文档。
Examples
#![feature(stdin_forwarders)] use std::io; let splits = io::stdin().split(b'-'); for split in splits { println!("got a chunk: {}", String::from_utf8_lossy(&split.unwrap())); }Run
Trait Implementations
This is supported on Unix only.
This is supported on WASI only.
This is supported on Windows only.
提取原始句柄,无需任何所有权。