【发布时间】:2015-03-01 22:03:43
【问题描述】:
所以我可以通过标准输入轻松地从我的 .txt 文件中获取我正在寻找的 int 值,但是当它之前有一个空格(或多个空格)时,它不起作用并且发生数据错误,因为它是一个整数,所以我下面的代码用于抓取一个字符串,当我把一个 int 放在那里时不起作用,因为你不能将一个 Int 与一个字符串进行比较。有关解决方法的任何想法?
Until_loop: -- Loop to get chars even if space is between
loop
get(int_variable);
exit Until_loop when int_variable) /= " "; --won't work
end loop Until_loop;
【问题讨论】:
-
查看 Look_Ahead 程序。如果它向您显示空白字符,请获取该字符(到字符变量)。继续这样做,直到你看到一个数字(或 + 或 -)。但我要做的是将整行作为一个字符串并将其分解。如果您知道字符串的一个切片(例如
Expression(Start ..End)是一个整数,那么 `int_variable := Integer'value(Expression(Start .. End);' 将使用“值属性”将该切片转换为一个整数跨度> -
当我尝试使用 look_ahead 时,它显示“参数 End_OF_Line 缺少参数,上下文需要函数调用,找到过程名称。”
-
这就是为什么我称它为过程,而不是函数。查找文档应该不难——adaic.org/resources/add_content/standards/05rm/html/… 就是其中之一。我推荐约翰巴恩斯的书作为一本严肃的参考书。
-
整数上的
get应该跳过前导空格(请参阅RM A.10.8,第 8 段),所以我不清楚您的问题是什么。如果您正在做的事情比仅仅从由空格分隔的文件中读取整数更复杂,那么我同意 Brian 的第二句话,即阅读整行并自己处理。