On 02/01/2012 03:14 PM, bearophile wrote:
> Ali Çehreli:
>
>> what is the best way of modifying that array?
>
> In your code it's the definition too that throws an exception:

Of course! I need sleep. :( I also failed to mention that the rest of the characters should be '\0' filled too but it's not a big deal.

> void main() {
>      char[100] a = "old content";
> }
>
>
> This works, but it's not nice:
>
> import std.stdio;
> void main() {
>      char[100] a;
>      string s1 = "old content";
>      a[0 .. s1.length] = s1;
>      writeln(a);
>      string s2 = "new content";
>      a[0 .. s2.length] = s2;
>      writeln(a);
>      a[0 .. "new content".length] = "new content";
>      writeln(a);
> }
>
>
> Bye,
> bearophile

The following is some of mine and the ones that did not work.

import std.stdio;
import std.algorithm;
import std.string;
import std.array;

void main()
{
    char[100] a;

    // explicit:
    foreach (i, c; "one") {
        a[i] = c;
    }
    a["one".length .. $] = '\0';
    writeln(a);

    a = leftJustify("two", a.length, '\0');
    writeln(a);

    // copy(a, "new content");
    // fill(a, "new content");
    // insertInPlace(a, "new content");
    //
    // Those do not work with errors similar to this:
    //
    //   Error: template std.algorithm.copy(Range1,Range2) if
    //   (isInputRange!(Range1) &&
    //   isOutputRange!(Range2,ElementType!(Range1))) does not match any
    //   function template declaration
}

Ali

Reply via email to