2016-12-14 47 views
1

在Ada中,我們可以給字符串比最初指定的字符少嗎? 例如:Ada:字符串合法值?

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

此編碼是否正確?或者我們有義務給出一個5個字符的字符串?

謝謝。

+2

在這種情況下你需要一個5個字符的字符串(固定字符串)。還有其他選項,如Ada.Strings.Bounded和Ada.Strings.Unbounded,取決於您的需要 – egilhh

回答

6

使用類型String,您必須像使用Ada中的其他數組類型一樣填充數組中的所有位置。

但也有一些技巧:

  • 初始化String(陣列),您聲明它,你沒有申報明確的範圍:
declare 
    Text : constant String := "Ada"; 
begin 
    ... 
end; 
  • 選擇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。 [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; 

或使用可用的字符串處理軟件包之一。