September 25, 2004 std.string.atoi: requires cast? | ||||
---|---|---|---|---|
| ||||
<alert comment="newbie"> I was wondering why the compiler rejected lines 6 and 7. The documentation doesn't mention anything about: intC atoi(char*) #import std.string; #void main () #{ # char[4] numStr1 = "1234"; # long num1 = atoi(numStr1); // <-- Ouch # num1 = std.string.atoi(numStr1); // <-- Ouch # num1 = atoi(cast(char[])numStr1); # char[] numStr2 = "4321"; # long num2 = atoi(numStr2); # num2 = std.string.atoi(numStr2); #} // .\Test.d(6): function atoi overloads intC (char*) and long(char[]s) both match argument list for atoi // .\Test.d(7): function atoi overloads intC (char*) and long(char[]s) both match argument list for atoi </alert> |
September 25, 2004 Re: std.string.atoi: requires cast? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Lynn Allan | Lynn Allan wrote:
> <alert comment="newbie">
>
> I was wondering why the compiler rejected lines 6 and 7. The documentation
> doesn't mention anything about:
> intC atoi(char*)
>
> #import std.string;
> #void main ()
> #{
> # char[4] numStr1 = "1234";
> # long num1 = atoi(numStr1); // <-- Ouch
> # num1 = std.string.atoi(numStr1); // <-- Ouch
> # num1 = atoi(cast(char[])numStr1);
>
> # char[] numStr2 = "4321";
> # long num2 = atoi(numStr2);
> # num2 = std.string.atoi(numStr2);
> #}
> // .\Test.d(6): function atoi overloads intC (char*) and long(char[]s)
> both match argument list for atoi
> // .\Test.d(7): function atoi overloads intC (char*) and long(char[]s)
> both match argument list for atoi
>
> </alert>
icky. The std.string module's atoi(char[] s) just calls
atoi(toStringz(numStr1)) so probably the simplest thing to do is call
long num1 = atoi(toStringz(numStr1));
(don't worry about the toStringz allocating a new string because the literal
"1234" has a trailing 0) or as you suggest just go ahead and tell the
compiler which atoi by casting. It is unfortunate that the D atoi overloads
the C atoi. Maybe all those C functions should be private and add some
std.c.string or something.
-Ben
|
Copyright © 1999-2021 by the D Language Foundation