Separate IP parts
Anonymouse via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Dec 9 21:46:01 PST 2016
On Saturday, 10 December 2016 at 03:51:34 UTC, brocolis wrote:
> How do I separate IP parts with dlang?
>
> I found this very cool trick, with C++:
> http://stackoverflow.com/a/5328190
>
> std::string ip ="192.168.1.54";
> std::stringstream s(ip);
> int a,b,c,d; //to store the 4 ints
> char ch; //to temporarily store the '.'
> s >> a >> ch >> b >> ch >> c >> ch >> d;
> std::cout << a << " " << b << " " << c << " "<< d;
>
> I wonder what's the equivalent D code.
Not much of a trick, but:
import std.algorithm : splitter, map;
import std.range : take;
import std.conv : to;
import std.array : array;
string ip = "192.168.1.54";
auto parts = ip
.splitter('.')
.take(4)
.map!((a) => a.to!int)
.array;
assert(parts[0] == 192);
assert(parts[1] == 168);
assert(parts[2] == 1);
assert(parts[3] == 54);
Remove the .array to keep it lazy, but then you can't index it
for the values, only walk through them in a foreach.
More information about the Digitalmars-d-learn
mailing list