Unexpected behaviour using remove on char[]
Ali Çehreli
acehreli at yahoo.com
Sun Oct 25 21:02:30 UTC 2020
On 10/25/20 12:29 PM, IGotD- wrote:
> What I discovered is that remove doesn't really remove size number of
> bytes but also removed entire multibyte characters and consider that one
> step. The result was of course that I got out of bounds exceptions as it
> went past the end.
This is the infamous "auto decode" at work.
> When I changed char[] to ubyte[] my code started to work correctly again.
Instead of changing the type, you can temporarily treat them as ubyte[]
with std.string.representation:
import std.stdio;
import std.string;
void print(R)(R range) {
writefln!"%-(%s, %)"(range);
}
void main() {
auto s = "abcçd".dup;
print(s);
print(s.representation);
}
Prints:
a, b, c, ç, d
97, 98, 99, 195, 167, 100
Ali
More information about the Digitalmars-d-learn
mailing list