tupper fails
Erin Sheldon
erin.sheldon at gmail.com
Sun Aug 22 17:13:46 PDT 2010
Hi All -
I'm just getting started with D, and I'm liking it so far, thanks to
everyone for all the hard work.
I was doing some string work and found that toupper() is failing on my char[]
array, although tolower() does work. E.g. these two examples:
char[] s;
s ~= "Hello";
auto s_low = s.tolower();
auto s_up = s.toupper();
The tolower works but the toupper fails (error at the bottom of this message).
For reference I'm using 2.048.
I noticed that tolower() and toupper() have different implementations, although
there was a section commented out in tolower() that looks just like the toupper
implementation.
I converted toupper() to use essentially the same code as tolower() and all
seems to work well. e.g.
S toupper(S)(S s) if (isSomeString!S)
{
foreach (i, dchar c; s)
{
if (!std.uni.isUniLower(c)) continue;
auto result = s[0.. i].dup;
foreach (dchar c; s[i .. $])
{
if (std.uni.isUniLower(c))
{
c = std.uni.toUniUpper(c);
}
result ~= c;
}
return cast(S) result;
}
return s;
}
Perhaps toupper() was in the midst of being changed when this snapshot of the
code was made? Anyway, I thought I would bring it to your attention.
Thanks again,
Erin Scott Sheldon
/home/esheldon/local/dmd2/linux/bin/../../src/phobos/std/string.d(968): Error: cannot implicitly convert expression (changed ? cast(const(char)[])assumeUnique(r) : s) of type const(char)[] to char[]
/home/esheldon/local/dmd2/linux/bin/../../src/phobos/std/string.d(11): Error: template instance std.string.toupper!(char[]) error instantiating
More information about the Digitalmars-d-bugs
mailing list