我有一些關於將String變量寫入文件的問題。 問題是我必須指定該字符串的確切長度。否則輸出文件將只包含一些廢料值。我不知道這是否可以以某種方式解決,而無需事先告訴字符串的長度?在ada中的文件IO,如何將字符串寫入文件?
我知道我的Get()
過程存儲該變量的長度,我只是可以將它返回給主程序。但是,我想寫我的程序,以便在開始寫入輸出文件之前,先執行從輸入文件中讀取的所有內容。
with Ada.Text_Io, Ada.Integer_Text_Io;
use Ada.Text_Io,Ada.Integer_Text_Io;
procedure Uppgift is
type Bil_Register is
record
Namn : String(1..50);
Adress : String(1..50);
Post : String(1..50);
Reg : String(1..6);
end record;
Infil : File_Type;
Utfil : File_Type;
L, I : Integer;
Br : Bil_Register;
procedure Get(F : in out File_Type; Br : out Bil_Register) is
Length : Integer;
begin
Get_Line(F, Br.Namn, Length);
end;
begin
Open(Infil, In_File, "register.txt");
Create(Utfil, Out_File, "test.txt");
Get(Infil, Br);
Put_Line(Utfil, Br.Namn);
Close(Infil);
Close(Utfil);
end Uppgift;
-
EDIT(2011.08.20)
這似乎是隻有基於Unix操作系統的問題。當你使用Windows時,當你將它打印到文件或屏幕上時,你不必絕對使用字符串大小。
你碰巧使用Unbounded_String與文件I/O時,有一些例子嗎?我無法讓它工作。 – starcorn
我編輯了一個快速演示,我扔在一起的問題。請注意,您正在使用的文件是Ada.Text_IO的File_Type。 –