Один из арендаторов C ++ - «Вы не платите за то, что вам не нужно». Это означает, что не обязательно должен быть универсальный строковый класс, который должен знать каждый программист C ++ и (что более важно) ИСПОЛЬЗОВАТЬ. Может быть, ваш проект требует потокобезопасных строк. Вы можете бросить свой собственный класс. И у вас всегда есть возможность использовать существующий std :: string.
Просто так получилось, что в большинстве случаев std :: string достаточно хорош. Но когда это не так, разве ты не рад, что ты не заперт в этом? Попробуйте развернуть свой собственный класс String на Java и посмотрите, сколько времени потребуется, пока вы не потянете за волосы.
Что касается вашего второго пункта, если вы собираетесь бороться с библиотекой, которую вы добавили в свой проект, почему вы вообще добавили библиотеку в свой проект? Частью решения использовать wxWidgets или QT является признание того, что вы должны включить его строковый класс в ваш проект (или, по крайней мере, значительную часть этого проекта). Точно так же, как решение о создании библиотеки "C" означает использование буферов char * и параметров размера для всех функций.
Итак, да, изучите класс альтернативной строки. Если вы используете библиотеку (и хотите стать опытным с ней), вы не можете игнорировать часть библиотеки только потому, что «это другой класс строки». Это не имеет смысла.