Очень зависит от решаемой задачи. Как правило, неплохо подходит std::string.
Но если вам нужно работать с текстом в utf-8, начинаются интересные нюансы.
Использовать для строк массивы - это подход из языка C. Он годится в тех редких случаях, когда у вас, например, максимальная длина строки ограничена и подобных. В общем случае, если вы начнете использовать для строк массивы, вы просто заново напишите плохо отлаженную, неоптимальную, и едва ли хорошо оттестированную реализацию std::string еще раз.