在Ada中,我們可以給字符串比最初指定的字符少嗎? 例如:Ada:字符串合法值?
Text : String(1..5);
Text := "ada";
此編碼是否正確?或者我們有義務給出一個5個字符的字符串?
謝謝。
在Ada中,我們可以給字符串比最初指定的字符少嗎? 例如:Ada:字符串合法值?
Text : String(1..5);
Text := "ada";
此編碼是否正確?或者我們有義務給出一個5個字符的字符串?
謝謝。
使用類型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;
正如@egilhh也提到的那樣,您還可以根據需要使用Bounded_String。 [Ada Wikibook](https://en.wikibooks.org/wiki/Ada_Programming/Strings)給出了這些不同類型的完整概述。 –
代碼是不正確的,你必須指定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;
或使用可用的字符串處理軟件包之一。
在這種情況下你需要一個5個字符的字符串(固定字符串)。還有其他選項,如Ada.Strings.Bounded和Ada.Strings.Unbounded,取決於您的需要 – egilhh