Kind of weird how he wrote his own string class, as well as rewriting some other perfectly good standard library stuff.
not that weird: Qt and others do it as well. Not sure why though, maybe because at the time they started there was a lack of a decent std::string implementation on all platforms?
Qt does it because the library predates common availability of std::string across multiple compilers. It's been a while since I looked but there is a lot of funky stuff in Qt that would look saner if they had the benefit of starting with a recent standard.
So build unicode routines on top. Don't make me put all my data in a non-standard datatype where another type already exists and is more common.
Users of C++ already have to deal with std::string and char * and possibly PWSTR if they are on Windows, why throw yet another type at them?
This reminds me of a joke I used to tell, it starts with a problem that there are too many string types, and the solution, somehow, always ends up being another string type...
not that weird: Qt and others do it as well. Not sure why though, maybe because at the time they started there was a lack of a decent std::string implementation on all platforms?