我是Eclipse新手,我一直试图读取文件流但没有成功。我通常在SWI-Prolog中使用的代码是:
read_until_stop(File, [L|Lines]) :-
read_line_to_codes(File, Codes),
Codes \= end_of_file,
atom_codes(L, Codes),
L \= stop,
!,
read_until_stop(File, Lines).
read_until_stop(_, []).
但是read_line_to_codes
显然在Eclipse中不可用。对此有什么好的选择?
答案 0 :(得分:1)
正如Eclipse manual所建议的那样,Eclipse副本将是
read_line(Stream, String) :-
read_string(Stream, end_of_line, _Length, String).
区别在于read_string返回实际字符串而不是代码列表,即不再需要atom_codes
:
?- read_string(input, end_of_line, Length, String).
abcdefghi
Length = 9
String = "abcdefghi"
yes.
答案 1 :(得分:1)
我认为read_line_to_codes / 2可以很容易地在ECLiPSe中实现,但是为了效率重用可用的内置。您可以使用read_line / 2。
尝试定义
:- use_module(library(util)).
read_line_to_codes(S, L) :- read_line(S, L).
或只是调用read_line ...