23.4.3 strtoi

The standard function strtoi provides the following interface:

type Strtoi_Result =
  struct
  {
    uint<64> off;
    int<64> val;
  };

fun strtoi = (string str, int base = 10, ulong start = 0) Stroi_Result: { … }

It parses a signed integral number in the given base in the string str at position start and returns its value and its length in the val and off fields of a new Strtoi_Result instance.

Specifying a start that is greater than or equal to the length of the string causes a E_out_of_bound exception to be raised.

The accepted values for base are 2, 8, 10 (the default) and 16. If any other base is requested an E_inval exception is raised.

Note that this function parses an integer but permits more characters to follow the given integer. As an example, take a look at parsing “12foo” in base 16:

#!!# strtoi ("12foo", 16)
Strtoi_Result {
  off=3UL,
  val=303L
}
#!!# strtoi ("12foo", 16, 1)
Strtoi_Result {
  off=3UL,
  val=47L
}