String Ada读取字符串(相当于扫描%s)
如何读取与C中String Ada读取字符串(相当于扫描%s),string,scanf,ada,String,Scanf,Ada,如何读取与C中scanf(“%s”)类似的单词(跳过空格并读取字符,直到遇到空格?skip\u Leading\u空格: 环 Next:=Ada.Text\u IO.Get; 当不是空白中的下一个时退出; 结束循环跳过前导空间; 读单词: 环 Word:=Word&Next; Next:=Ada.Text\u IO.Get; 在空白处下一步时退出; 结束循环读取单词; 跳过前导空格: 环 Next:=Ada.Text\u IO.Get; 当不是空白中的下一个时退出; 结束循环跳过前导空间; 读单
scanf(“%s”)
类似的单词(跳过空格并读取字符,直到遇到空格?skip\u Leading\u空格:
环
Next:=Ada.Text\u IO.Get;
当不是空白中的下一个时退出;
结束循环跳过前导空间;
读单词:
环
Word:=Word&Next;
Next:=Ada.Text\u IO.Get;
在空白处下一步时退出;
结束循环读取单词;
跳过前导空格:
环
Next:=Ada.Text\u IO.Get;
当不是空白中的下一个时退出;
结束循环跳过前导空间;
读单词:
环
Word:=Word&Next;
Next:=Ada.Text\u IO.Get;
在空白处下一步时退出;
结束循环读取单词;
从标准输入读取单词。作为函数编写。(未经测试。)
函数下一个单词返回字符串为
包Latin_1重命名Ada.Characters.Latin_1;
子类型空白是字符
使用静态_谓词=>在“”中的空格|拉丁文_1.HT;
使用所有类型Ada.Strings.Unbounded.Unbounded_String;
单词:Ada.Strings.Unbounded.Unbounded_String;
其次:性格;
开始
跳过前导空格:
环
Ada.Text_IO.Get(下一步);
不存在时退出(空白中的下一个);
结束循环跳过\u引导空间;
读单词:
环
Word:=Word&Next;
Ada.Text_IO.Get(下一步);
在空白处下一步时退出;
结束循环读取单词;
返回到_字符串(Word);
结束下一个单词;
从标准输入读取单词。作为函数编写。(未经测试。)
函数下一个单词返回字符串为
包Latin_1重命名Ada.Characters.Latin_1;
子类型空白是字符
使用静态_谓词=>在“”中的空格|拉丁文_1.HT;
使用所有类型Ada.Strings.Unbounded.Unbounded_String;
单词:Ada.Strings.Unbounded.Unbounded_String;
其次:性格;
开始
跳过前导空格:
环
Ada.Text_IO.Get(下一步);
不存在时退出(空白中的下一个);
结束循环跳过前导空间;
读单词:
环
Word:=Word&Next;
Ada.Text_IO.Get(下一步);
在空白处下一步时退出;
结束循环读取单词;
返回到_字符串(Word);
结束下一个单词;
您想要扫描,因此最好使用Ada标准库中提供的内容进行扫描。一个候选者是Ada.Strings.Fixed.Find_Token
with Ada.Strings.Fixed, Ada.Strings.Maps.Constants, Ada.Text_IO;
use Ada.Text_IO, Ada.Strings;
procedure Read_Word is
Text : constant String := Get_Line;
First : Positive;
Last : Natural;
White : Maps.Character_Set := Maps.To_Set (" ");
begin
Fixed.Find_Token
(Source => Text,
Set => White,
Test => outside,
First => First,
Last => Last);
Put_Line ("word is: " & Text (First .. Last) & '.');
end Read_Word;
您需要扫描,因此最好使用Ada标准库中提供的内容。一个候选者是
Ada.Strings.Fixed.Find_Token
with Ada.Strings.Fixed, Ada.Strings.Maps.Constants, Ada.Text_IO;
use Ada.Text_IO, Ada.Strings;
procedure Read_Word is
Text : constant String := Get_Line;
First : Positive;
Last : Natural;
White : Maps.Character_Set := Maps.To_Set (" ");
begin
Fixed.Find_Token
(Source => Text,
Set => White,
Test => outside,
First => First,
Last => Last);
Put_Line ("word is: " & Text (First .. Last) & '.');
end Read_Word;
标签的存在是为了使代码更清晰,显然,您可以使用in、in/out和out参数使其成为一个过程。您也可以将其设置为函数,但取决于您使用的Ada修订版,您可能无法使用所有类型的参数传递模式。我太像一个老师了,无法在第一次给出完整的解决方案。;-)我绝对不会放弃这些标签,因为它们使源代码更易于阅读。标签的存在是为了使代码更清晰,显然,您可以使用in、in/out和out参数使其成为一个过程。您也可以将其设置为函数,但取决于您使用的Ada修订版,您可能无法使用所有类型的参数传递模式。我太像一个老师了,无法在第一次给出完整的解决方案。;-)我绝对不会放弃这些标签,因为它们使源代码更容易阅读。