我有一个文本文件,我分成两个文件 . 我将逐行查找输入文件以查找CRLF,并使用if语句在找到CRLF时执行操作 . 这是带有CRLF的输入文件的简短剪辑 . 我是Ada的新手,所以如果有更好的方法,请告诉我
我希望能够在可能的情况下使用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 回答
那不是真正的文本文件;没有那种线条分隔符的混合!
最好使用
Ada.Streams.Stream_IO
(ARM A.12.1)并使用Character’Read
直到得到End_Error
异常 .Get_Line
已经剥离了行分隔符(在Windows平台上是CRLF,或者只是linux或其他* nix平台上的LF),所以你的方法不起作用 . 尝试逐个字符阅读 .此外,不推荐使用
ASCII
包 . 你最好用Ada.Characters.Latin_1
.(当然最好让运行时决定使用哪个行终止符与
Get_Line
然后处理该行,但我认为这是一个家庭作业并找到行尾是一个要求?)