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;
fn main() -> io::Result<()> {
let mut buffer = String::new();
let mut stdin = io::stdin(); // 我们在这里得到 `Stdin`。
stdin.read_line(&mut buffer)?;
Ok(())
}
RunImplementations
锁定此句柄并读取输入行,并将其添加到指定的缓冲区。
有关此方法的详细语义,请参见 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 键,然后继续
pub fn into_locked(self) -> StdinLock<'static>ⓘ
pub fn into_locked(self) -> StdinLock<'static>ⓘ
将此句柄用于标准输入流,锁定与流相关联的共享缓冲区并返回可读保护。
当返回的守卫作用域解除锁定。
返回的防护还实现了用于访问底层数据的 Read
和 BufRead
traits。
使用 stdin_locked
函数直接获取锁定句柄通常更简单,除非附近的代码也需要使用解锁句柄。
Examples
#![feature(stdio_locked)]
use std::io::{self, BufRead};
fn main() -> io::Result<()> {
let mut buffer = String::new();
let mut handle = io::stdin().into_locked();
handle.read_line(&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()));
}
RunTrait Implementations
提取原始句柄,无需任何所有权。
与 read
相似,不同之处在于它读入缓冲区的一部分。 Read more
读取所有字节,直到此源中的 EOF 为止,然后将它们放入 buf
。 Read more
读取这个源中的所有字节,直到 EOF 为止,然后将它们追加到 buf
。 Read more
为这个 Read
实例创建一个 “by reference” 适配器。 Read more
创建一个适配器,将这个流与另一个链接起来。 Read more