【问题标题】:How do I clear the current line of stdout?如何清除当前标准输出行?
【发布时间】:2015-05-03 15:08:47
【问题描述】:

我正在尝试在 Rust 中制作一个打印到标准输出的状态指示器。在其他语言中,我使用了一个函数来清除 stdout 的当前行,同时保持其他语言不变。我似乎找不到 Rust 等价物。有吗?这是我正在寻找的一个小例子

for i in 0..1000 {
    stdio::print(format!("{}", i).as_slice));
    stdio::clear();
}

【问题讨论】:

  • 你在哪个平台上?你想到的其他语言对应的函数是什么?

标签: rust


【解决方案1】:

使用退格的 ASCII 码是一种选择,例如:

print!("12345");
print!("{}", (8u8 as char));

由于打印退格字符(ascii 代码 8),在删除 5 后,这将最终输出“1234”。奇怪的是,Rust 不将 \b 识别为有效的字符转义。

【讨论】:

  • \u{8} 让你退格。 Rust 不将 \b 识别为有效的转义并不奇怪。它不是绝对标准的转义之一,尽管它很常见。
【解决方案2】:

在 ANSI 终端(Windows 上的命令提示符之外的几乎所有内容)上,\r 会将光标返回到当前行的开头,允许您在其上写入其他内容(新内容或空白以擦除你已经写过了)。

print!("\r")

标准库中没有任何东西可以以与平台无关的方式执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 2016-08-11
    • 2019-11-15
    • 1970-01-01
    相关资源
    最近更新 更多