我在Prolog工作,正在尝试从文件读入。第一行是密码。使用密码,我希望能够使用特殊字符。
这是读取文件代码:
readfile(Filename):-
open(Filename, read, Str),
read(Str, Thepassword),
read(Str, Thefirewall),
close(Str),
nb_setval(password, Thepassword),
nb_setval(firewall, Thefirewall).
这项工作正常,直到我将密码从布里坦尼改为britta!y,然后我得到ERROR: computer1.txt:1: Syntax error: Operator expected
。
任何人都知道我应该做什么?
答案 0 :(得分:2)
ObjectMapper om = new ObjectMapper();
om.addHandler(MyDeserializationProblemHandler.getInstance());
读取Prolog术语。您可能想要的是阅读整行,无论它是否在Prolog语法中。
在SWI Prolog中,您可以使用谓词read/2
。 (见SWI manual entry)。您必须先使用read_line_to_codes/2
包含库。
SICStus有一个类似的谓词read_line/1/2
。
如果您需要原子而不是代码列表,则可以使用use_module(library(readutil))
进行转换。