Ada:附加文本文件中的退格键

Ada: Backspace in Appended Text File

我了解到您可以 open/close 一个 txt 文件并多次写入(追加)。虽然,每次我这样做都是从新的一行开始的。无论如何我可以回到光标停止的地方吗? 谢谢!

是的。使用另一个 I/O 包而不是 Ada.Text_IO。一种选择是使用用适当的字符类型实例化的通用包 Ada.Direct_IO

使用 String 类型的流和流属性 'Write。该属性表示将输出字符串对象的裸数据的过程。

with Ada.Streams.Stream_IO;

procedure Write_Appending is

   use Ada.Streams.Stream_IO;

   F : File_Type;

   procedure Write_Hello is
   begin
      String'Write (Stream (F), "Hello, ");
   end Write_Hello;

   procedure Write_World is
   begin
      String'Write (Stream (F), "World");
   end Write_World;

begin
   Create (F, Name => "Hello.txt");
   Write_Hello;
   Write_World;
   Close (F);

   -- forgot "!", append it at the end of the file.
   Open (F, Mode => Append_File, Name => "Hello.txt");
   Character'Write (Stream (F), '!');
   Close (F);
end Write_Appending;

结果文件

$ cat Hello.txt 
Hello, World!$ 

请注意文件的最后一行没有以行终止符结尾。要写入 Current_Output,请考虑 Ada.Text_IO.Text_Streams (LRM A.12.2).