On 05/19/2014 10:07 AM, Tim wrote:
> I already tried:
>
> void main()
> {
> char[] sMyText = "Replace the last char_";
> sMyText[$ - 1] = '.';
> }
>
> but I always getting "Error: cannot implicitly convert expression
> ("Replace the last char_") of type string to char[]".
That's a good thing because that string literal is immutable. If that
code compiled you would get undefined behavior.
> I know, I can use cast(char[])
Unfortunately, not in this case. That undefined behavior would manifest
itself as a "Segmentation fault" on many systems. :)
> but I don't like casts for such simple things...
What you want to do makes sense only if you have a mutable ASCII string.
Such strings are generated at run time so the problem is usually a non
issue:
import std.stdio;
void main()
{
foreach (line; stdin.byLine) {
char[] s = line.dup; // (or .idup if you want immutable)
s[$-1] = '.';
writefln("Input : %s", line);
writefln("Output: %s", s);
}
}
Ali