On Saturday, 10 December 2016 at 08:03:00 UTC, biozic wrote:
This would do the same. I wouldn't say it's a trick.

    import std.format : formattedRead;
    import std.stdio : writefln;

    string ipAddr = "192.168.1.54";
    int a, b, c, d;
    formattedRead(ipAddr, "%d.%d.%d.%d", &a, &b, &c, &d);
    writefln("%s %s %s %s", a, b, c, d);

Well, you know, that's one of the not so great things about Dlang... you cannot even trust the provided examples, if there are any:

C:\Temp\D>more formattedReadIps.d
import std.format;
string s = "hello!124:34.5";
string a;
int b;
double c;
formattedRead(s, "%s!%s:%s", &a, &b, &c);
assert(a == "hello" && b == 124 && c == 34.5);

C:\Temp\D>dmd -v formattedReadIps.d
binary    C:\D\dmd2\windows\bin\dmd.exe
version   v2.072.1
config    C:\D\dmd2\windows\bin\sc.ini
parse     formattedReadIps
formattedReadIps.d(6): Error: unexpected ( in declarator
formattedReadIps.d(6): Error: basic type expected, not "%s!%s:%s"
formattedReadIps.d(6): Error: found '"%s!%s:%s"' when expecting ')' formattedReadIps.d(6): Error: no identifier for declarator formattedRead(s, _error_) formattedReadIps.d(6): Error: semicolon expected following function declaration
formattedReadIps.d(6): Error: declaration expected, not ','
formattedReadIps.d(7): Error: declaration expected, not 'assert'


Reply via email to