首页 文章

在Ada if语句中使用Carriage Return和Line Feed

提问于
浏览
0

我有一个文本文件,我分成两个文件 . 我将逐行查找输入文件以查找CRLF,并使用if语句在找到CRLF时执行操作 . 这是带有CRLF的输入文件的简短剪辑 . 我是Ada的新手,所以如果有更好的方法,请告诉我

message format with CRLF showing

我希望能够在可能的情况下使用ASCII.CR和ASCII.LF .

我可以使用下面的代码获得自己的单个CR,但是在尝试获取CRLF行时遇到问题 .

procedure readFrom is
   My_File  : FILE_TYPE;
   File_Name : String := "input.txt";
   CR : String := "" & ASCII.CR;

   begin

      open(My_File, In_File, File_Name);
      create(out1, Out_File, "out1.txt";
      create(out, Out_File, "out2.txt";

      while not Ada.Text_IO.End_Of_File (My_File) loop
        declare
         line : String := Get_Line(My_File);
        begin

           if (line = CR) then
              <*search the line and do stuff*>
           end if;
        end:
      end loop:
      Close(My_File);

end readFrom;

2 回答

  • 3

    那不是真正的文本文件;没有那种线条分隔符的混合!

    最好使用 Ada.Streams.Stream_IOARM A.12.1)并使用 Character’Read 直到得到 End_Error 异常 .

  • 1

    Get_Line 已经剥离了行分隔符(在Windows平台上是CRLF,或者只是linux或其他* nix平台上的LF),所以你的方法不起作用 . 尝试逐个字符阅读 .

    此外,不推荐使用 ASCII 包 . 你最好用 Ada.Characters.Latin_1 .

    (当然最好让运行时决定使用哪个行终止符与 Get_Line 然后处理该行,但我认为这是一个家庭作业并找到行尾是一个要求?)

相关问题