如何清除stdout的当前行?
我正试图在Rust中打印到stdout中的状态指示器。在其他语言中,我使用了一个清除当前stdout行而不改变其他语言的函数。我似乎无法找到一个Rust等价物。有一个吗?下面是我要找的如何清除stdout的当前行?
for i in 0..1000 {
stdio::print(format!("{}", i).as_slice));
stdio::clear();
}
在ANSI终端上(几乎除Windows上的命令提示符以外的所有内容),\r
将光标返回到当前行的开头,允许您在其上写入其他内容(新内容或空白字符以清除您的内容已经写了)。
print!("\r")
标准库中没有任何东西可用于以平台无关的方式执行此操作。
利用退格键的ASCII码的一个小例子是一个选项,例如:
print!("12345");
print!("{}", (8u8 as char));
这最终将输出“1234”后的5由于打印退格字符(ascii code 8)而被删除。奇怪的是,Rust并不认为\ b是一个有效的字符转义。
''你会退格。 Rust并不认为'\ b'是一个有效的转义,一点也不奇怪;它不是绝对标准的逃跑之一,尽管它很常见。 – 2015-03-03 06:07:18
cli是一个箱子(docs),它似乎很好地解决了这个问题。它还附带一些其他常见的好东西,如进度条和样式提示。
cli::clear
应该是你想要的功能。
使用类似重复的主要困难:
println!("\r");
的是,这会不会是在使用CLI跨操作系统兼容::清楚应该只要有问题的OS支持。在这里使用cli箱子的另一个好处是,它是一个更高层次的抽象,以清晰的方式传达您的实际含义。
您想清除终端。
您不想重复获得回车。
还有其他的例程在这里类似的东西。即进度条,这是你正在努力解决的问题。
你在哪个平台上?你在想什么其他语言的相应功能? – 2015-03-03 17:14:35