digitalmars.D - std.string.atoi: requires cast?
-
Lynn Allan
(20/20)
Sep 25 2004
- Ben Hinkle (10/34) Sep 25 2004 icky. The std.string module's atoi(char[] s) just calls
<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 () // .\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>
Sep 25 2004
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 () // .\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
Sep 25 2004