2016-12-14 2 views
1

Adaでは、最初に指定した文字列より少ない文字列を与えることはできますか? 例:Ada:文字列の法的価値?

Text : String(1..5); 
Text := "ada"; 

このコードは正しいですか?または、5文字の文字列を与える必要がありますか?

ありがとうございます。

+2

この場合、5文字の文字列(固定文字列)が必要です。必要に応じて、Ada.Strings.BoundedやAda.Strings.Unboundedのような他のオプションもあります。 – egilhh

答えて

6

タイプStringを使用すると、Adaの他の配列タイプと同じである必要があります。配列のすべての位置を埋めてください。

しかし、トリックの数があります

declare 
    Text : constant String := "Ada"; 
begin 
    ... 
end; 

    • は、あなたがそれを宣言し、あなたが明示的に範囲を宣言する必要はありませんString(配列)を初期化します
    • String(配列)のスライスを選択してください。
    declare 
        subtype Five_Characters is String (1 .. 5); 
        Text : Five_Characters := (others => ' '); 
    begin 
        Text (2 .. 4) := "Ada"; 
        ... 
    end; 
    

    使用Ada.Strings.Unbounded

    declare 
        use Ada.Strings.Unbounded; 
        Text : Unbounded_String; 
    begin 
        Text := To_Unbounded_String ("Ada"); 
        ... 
    end; 
    
+1

@egilhhも述べているように、必要に応じてBounded_Stringを使うこともできます。 [The Ada Wikibook](https://en.wikibooks.org/wiki/Ada_Programming/Strings)では、これらの異なるタイプの完全な概要を示しています。 –

1

コードが正しくありません、あなたは、例えば、5つの文字を指定する必要がありますどちらか

declare 
    Text : String(1..5); 
begin 
    Text := "ada "; 
end; 

または範囲

declare 
    Text : String(1..5) := (others => ' '); -- Init to spaces 
begin 
    Text(1..3) := "ada";     -- Text now contains "ada " 
end; 

を指定するか、使用可能な文字列処理パッケージのいずれかを使用します。