С++ позволяет реализовывать составные типы любой сложности на самом C++ c очень высокой эффективностью. Потому, не имеет смысла типы, имеющие сложную структуру и сложное поведение, встраивать в язык - он и так переусложнён.
Кроме того, если ты пишешь какой-нибудь очень специализированный софт, то в любой момент можешь заменить стандартную реализацию строк на свою собственную - никак не меняя остальной свой код. И это преимущество выноса строк в отдельную библиотеку.