Is there a d analog of strncmp?

dan via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Aug 21 20:09:20 PDT 2016


On Monday, 22 August 2016 at 01:45:02 UTC, Jonathan M Davis wrote:
> On Monday, August 22, 2016 00:14:31 Adam D. Ruppe via 
> Digitalmars-d-learn wrote:
>> int strncmp(string a, string b, int n) {
>>   if(a.length > n)
>>       a = a[0 .. n];
>>   if(b.length > n)
>>       b = b[0 .. n];
>>   import std.algorithm.comparison : cmp;
>>   return cmp(a, b);
>> }
>
> Aside from the imports, it can be turned into a one-liner if 
> you use take:
>
> return cmp(take(a, n), take(b, n));
>
> - Jonathan M Davis

Thanks Adam and Jonathan for your solutions.

For reference, one of the imports Jonathan is referring to is
    import std.range;

I did not know about take.  Well, i also did not know about cmp.  
So my code is probably not very idiomatic.  But i do appreciate 
all of you d-learn people!



More information about the Digitalmars-d-learn mailing list