首页 > 解决方案 > Ada - 使用 S'length 输入字符串

问题描述

问题很简单,可以通过简单的 Get_Line 来解决,但问题提示并非如此。

必须创建一个子程序。子程序当然应该只有一个参数(即字符串)和返回字符串的长度(作为整数)。要获取字符串的长度,您可以执行 S'Length 并且在主程序中键入时必须使用字符串的长度。

例如:

键入一个包含 3 个字母的字符串:

你输入了字符串:哇

with Ada.Text_IO;         use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;

procedure String_Program is

    function String_Length (S : in String) return Integer is
        Res : Integer;

    begin
        Res := S'Length;
        return Res;

    end String_Length;
     
    S : String (1 .. 3);

begin
    Put("Type a string containing 3 letters: ");
    Get(S);
    Put("You typed the string: ");
    Put(String_Length(S), Width => 1); 

end String_Program;

我已经按照指示完成了,但是我的程序输入了与字符串中的字符数量相对应的实际数字。所以当我输入“嘿”时,它会输入“3”。而且我知道为什么会这样,因为我将字符串的实际长度作为整数返回。如何输入实际字符串而不是数字?毕竟我要返回一个整数,所以这会很困难。

非常感谢您的帮助!

标签: stringada

解决方案


with Ada.Text_IO;  use Ada.Text_IO;

procedure String_Program is

   function String_Length (S : in String) return Natural is
   begin
      return S'Length;
   end String_Length;

   S : String (1 .. 3);
begin
   Put ("Type a string containing 3 letters: ");
   Get (S);
   Put ("You typed the string: ");

   -- Put string S to standard output one character at a time
   -- using String_Length.
   for Offset in 0 .. String_Length (S) - 1 loop
      Put (S (S'First + Offset));
   end loop;
   New_Line;

end String_Program;

推荐阅读