OCaml – Cum convertesc un șir de caractere în int? (Programare, String, Int, Ocaml)

Teshtek a intrebat.

Im’ newbie în Ocaml și Im’încearcă să facă acest lucru:

let medio a b =
    (a + b);;
let () = Printf.printf "%d + %d  = %d
" Sys.argv.(1) Sys.argv.(2) (medio Sys.argv.(1) Sys.argv.(2))    

Sys.argv.(1) trebuie să fie arg[1] ~ în C

Acum vreau să le folosesc ca parametri pentru funcția mea medio, , dar ele sunt șiruri de caractere. Cum pot să le parasez în int ? Există o funcție ocaml care să facă acest lucru?În python este int(Sys.argv.(2)) sau int atoi(const char *str) în C în ocaml ?

3 răspunsuri
Hugh Rawlinson

Ați putea folosi funcția „int_of_string” descrisă în manualul documentația.

ivg

Eu aș începe cu int_of_string. În general, biblioteca standard OCaml oferă funcții, care convertește între tipuri, de următoarea formă <output>_of_<input>, , de exemplu, float_of_string, , string_of_int, , etc.

V. Michel

Puteți utiliza Arg pentru a analiza argumentele liniei de comandă.

Exemplu: test.ml

  let ri_a=ref 0 in
  let ri_b=ref 0 in

  Arg.parse [
    ("-a",Arg.Int      (function i -> ri_a:=i),"");
    ("-b",Arg.Int      (function i -> ri_b:=i),"");
    ] (function s -> ()) "ERROR";

  Printf.printf "%d %d" !ri_a !ri_b;

Pentru a-l utiliza

./test -a 2 -b 3
2 3