我必须使用一些 SWI-Prolog 代码来打开一个新流(它在文件系统上创建一个文件)并倒入一些数据。生成的文件稍后在代码中的其他地方读取。
我想用 Prolog 中的字符串流替换文件流,以便不创建文件,然后将放入流中的所有内容作为一个大字符串读取。
SWI-Prolog 有字符串流吗?如果是这样,我如何使用它们来完成此任务?如果您能提供一个小片段,我将不胜感激。谢谢!
最佳答案
SWI-Prolog 实现 memory mapped files .这是我的一些旧代码的片段,同时进行写入/读取
%% html2text(+Html, -Text) is det.
%
% convert from html to text
%
html2text(Html, Text) :-
html_clean(Html, HtmlDescription),
new_memory_file(Handle),
open_memory_file(Handle, write, S),
format(S, '<html><head><title>html2text</title></head><body>~s</body></html>', [HtmlDescription]),
close(S),
open_memory_file(Handle, read, R, [free_on_close(true)]),
load_html_file(stream(R), [Xml]),
close(R),
xpath(Xml, body(normalize_space), Text).
关于stream - Prolog中的字符串流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23593156/