Ada.Strings.Fixed.Index_Non_Blank

时间:2015-06-28 19:35:20

标签: string ada

我在想,根据它的名字逻辑上,这个函数将返回第一个字符的索引,而不是空格,也就是说,不是空格或制表。

但是,在对某些字符串进行测试时,以及查看其实现时(文件 a-strsea.adb GNAT 4.7.4),我意识到这个函数实际上返回了第一个字符的索引不是普通空格(ASCII 32)。在我看来,这与其名称可以设想的内容不一致。

那么,我在哪里可以找到这个函数的预期行为(除了查看代码)?实际上,在AARM Ada 2012中,我只找到了原型,没有任何语义信息。

1 个答案:

答案 0 :(得分:6)

我同意使用“空白”这个词是不合适的。在其他地方,标准将“空白”定义为“空格或水平制表字符”。

AARM确实定义了Ada.Strings.Fixed.Index_Non_Blank

的行为
function Index_Non_Blank (Source : in String;
                          From : in Positive;
                          Going : in Direction := Forward)
    return Natural;
  

返回Index (Source, Maps.To_Set(Space), From, Outside, Going);

function Index_Non_Blank (Source : in String;
                          Going : in Direction := Forward)
    return Natural;
  

返回Index(Source, Maps.To_Set(Space), Outside, Going)

其中SpaceAda.Characters.Latin_1.Space,定义为' '

标准显示没有评论的Ada.Strings.Fixed索引的规范,然后是声明的子程序的效果描述,这可能会令人困惑。只需在文档中搜索Index_Non_Blank,并且不要假设有关它的所有信息都在一个地方。