D 更改控制台输出的一部分或一部分
是否有方法更改已写入控制台的内容 例如,我想更改已从以下内容写入的行:D 更改控制台输出的一部分或一部分,d,D,是否有方法更改已写入控制台的内容 例如,我想更改已从以下内容写入的行: _ Foo 。。。为此: + Foo 虽然理想情况下,这可以在Windows(powershell或命令行)和Linux(shell)上运行,但也可以接受只使用Linux的解决方案 我不熟悉标准输入和输出,如果这是一个基本问题,请原谅。如果光标仍在同一行上,您可以执行以下操作: write("_ Foo"); stdout.fllush;//To force the displaying of the text now.
_ Foo
。。。为此:
+ Foo
虽然理想情况下,这可以在Windows(powershell或命令行)和Linux(shell)上运行,但也可以接受只使用Linux的解决方案
我不熟悉标准输入和输出,如果这是一个基本问题,请原谅。如果光标仍在同一行上,您可以执行以下操作:
write("_ Foo");
stdout.fllush;//To force the displaying of the text now.
writeln("\r+ Foo"); //Output will be replaced
但这是行不通的:
writeln("_ Foo"); //Equivalent to as `write("_ Foo\n");`
stdout.fllush;//To force the displaying of the text now
writeln("\r+ Foo"); //Output will not be replaced (it will be on new line).
您也可以执行此操作以逐个擦除字符:
write("_ Foo");
stdout.fllush;//To force the displaying of the text now
writeln("\b+ Foo"); //Output will be "_ Fo+ Foo"
我还没有找到删除前几行的方法(我认为这是故意的)。光标是否仍在该行上?您可能可以输出“\r+Foo”,后跟stdout.flush以覆盖当前行。许多控制台窗口的行为类似于经典终端,因为适当的字符控制序列(通常涉及Esc字符)可以将光标移动到窗口中的任何点。VT100是一个非常常见的选择。如果windows上的windows命令是这种情况,我不知道。在windows上,这很简单,windows控制台api甚至可以让您在不移动光标的情况下覆盖缓冲区。但这比仅仅使用单行回车更复杂……别忘了可以
stdout.flush()如果要在不前进的情况下覆盖,请使用代码>而不是写一行。有些程序这样做是为了像旋转的东西一样显示。在注释中编写代码很难,但请检查以下内容:import std.stdio;导入core.thread;void main()。如果你能删除以前的行,它可能会弄乱过去的日志。我认为,无论是谁选择了可用的命令,都故意不包括删除前几行的命令。你是专门指Windows命令窗口吗?@ArndtJonasson不,任何(我想)。