我想知道(希望)有一种方法来管理控制台输出以允许高级打印实用程序。
具体来说,我想知道是否有一种方法可以将下一个字符将被打印到的位置的“光标”移动到下一个字符空间,而不会覆盖跳过空间中的字符。
我希望有一种解决方案,不涉及安装新模块或跟踪标准输出历史记录。
我知道回车符('\ r')可用于将控制台输出的'cursor'移回行首。
从那里开始,我知道您可以打印任何要覆盖的字符,而这些字符将覆盖在stdout中放置的所有字符,而剩下的字符将从先前的输出中保留。
但是,我想在左边保留先前字符中的x个字符,然后写我的输出,必要时覆盖我的行的其余部分。
我想打印输出:
_____| Name | Desc | Task | Progress |
[1] Foo Bar BarFoo [==== ] 50.0%
然后可以在不知道名称为“ Foo”和desc为“ Bar”的情况下更新第二行,以将“ FooBar”放在任务下(并更新进度栏...)
_____| Name | Desc | Task | Progress |
[1] Foo Bar FooBar [===== ] 62.5%
也就是说,我想用█修改下面显示的字符,同时保持下面显示的字符为X
_____| Name | Desc | Task | Progress |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX██████XXXXXXXX████████XX█████X
如果我愿意在左侧保留动态行内容,而在右侧保留静态内容,则只要预先知道/限制动态内容的宽度,就可以安全地更新行而不会丢失静态内容。 出于样式原因,我不希望这样做。
我知道我可以设置一些系统来跟踪已打印的内容,然后重新打印以保持静态内容。 我不希望这样,因为我正在处理的内容具有很多并发性,并且要实现图形效果会很繁琐。
我也很好奇是否支持这种功能。