我有一个文本文件,我将其拆分为两个文件。我将逐行查找输入文件以查找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;
答案 0 :(得分:3)
那不是真正的文本文件;不是那种行分隔符的混合!
更好地使用Ada.Streams.Stream_IO
(ARM A.12.1)并使用Character’Read
,直到您获得End_Error
例外。
答案 1 :(得分:1)
Get_Line
已经剥离了行分隔符(在Windows平台上是CRLF,或者在Linux或其他* nix平台上只是LF),因此您的方法无法正常工作。尝试逐字逐句阅读。
此外,不推荐使用ASCII
包。您最好使用Ada.Characters.Latin_1
。
(当然最好让运行时决定使用哪个行终止符与Get_Line
然后处理该行,但我认为这是一个家庭作业,找到行尾是一个要求?)