Prolog:如何将字符串转换为整数?

8

如标题所述 - 如何将字符串转换为整数?

思路大致如下:

convert(String,Integer).

examples:
convert('1',1).
convert('33',33).

我正在使用swi prolog

3
可能是 Parsing numbers with multiple digits in Prolog 的重复问题。 - Ted Hopp
2
@Ted Hopp:不是重复问题,另一个问题具有DCG的特定上下文。这可以更容易地完成。但是,OP必须决定给出字符串还是原子。 - Fred Foo
6个回答

16

使用 atom_number/2。例如:

  atom_number('123', X).
  X = 123.

1
严格来说,那是一个原子,不是一个字符串。 - Fred Foo

12
假设您真正想要一个字符串而不是原子,可以使用number_codes
?- number_codes(11, "11").
true.

?- number_codes(11, Str).
Str = [49, 49].            % ASCII/UTF-8

?- number_codes(N, "11").
N = 11.

5
也许可以使用atom_codes(?Atom, ?String)number_chars(?Number, ?CharList)来实现。

2

这是一段较为陈旧的内容,但在SWI Prolog中有一个谓词:number_string(N, S).

文档链接

number_string(123, S).
S = "123".

对于那些仍在寻找的人。


0
A simple example using Visual Prolog 10
==============================
% UNS-EPISI-LAB-IA

implement main
    open core

clauses
    run() :-
        console::write("Valor de A? "),
        A = console::readLine(),
        console::write("Valor de B? "),
        B = console::readLine(),
        Areal = toTerm(real, A),
        Breal = toTerm(real, B),
        console::write("A + B = ", Areal + Breal),
        _ = console::readChar().

end implement main

goal
    console::runUtf8(main::run).

欢迎来到SO!好的解决方案,但我认为它并不太相关,因为OP明确要求SWI-Prolog解决方案。 - hurufu

-1

在Visual Prolog中转换:

X=toTerm(real,H).

实数/整数/无符号...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接