作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在将字符串变量写入文件时遇到了一些问题。问题是我必须指定该字符串的确切长度。否则输出文件将只包含一些废料值。我想知道这是否可以以某种方式解决而无需事先告知字符串的长度?
我知道我的 Get()
过程存储了该变量的 Length,我可以将它返回给主程序。但是我想编写我的程序,以便在我开始写入输出文件之前先从输入文件中读取所有内容。
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;
-
编辑 (2011.08.20)
这似乎只是基于 Unix 的操作系统的问题。使用 Windows 时,当您将其打印到文件或屏幕时,您不必绝对使用字符串大小
最佳答案
嗯,必须在某处跟踪字符串有效部分的长度。
您可以将记录的每个字符串字段的有效长度保持为单独的字段:
Namn : String (1..50);
Namn_Length : Natural;
您可以定义自己的变量字符串类型包,或使用预先存在的包,例如 Variable_Length .例如
Namn : Variable_Length.Variable_String(50);
您可以将 Unbounded_String 用于字段和变量:
Namn : Unbounded_String;
还有 Ada.Text_IO.Unbounded_IO对于 I/O:
with Ada.Strings.Unbounded;
use Ada.Strings.Unbounded;
with Ada.Text_IO.Unbounded_IO;
procedure UTIO_Demo is
use Ada.Text_IO;
F : Ada.Text_IO.File_Type;
Data : Unbounded_String := To_Unbounded_String("Output by Unbounded_IO");
begin
Create(F, Ada.Text_IO.Out_File, "utio.tst");
Unbounded_IO.Put_Line(F, Data);
Close(F);
end UTIO_Demo;
如果您不想使用 Unbounded_IO 包,请使用 To_String 和 To_Unbounded_String 在 Unbounded_String 值和通过 Text_IO 读取和写入的字符串之间来回转换。
关于string - ada中的文件IO,如何将字符串写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6483793/
我是一名优秀的程序员,十分优秀!