Некоторые преимущества использования std::string по сравнению с raw-массивами символов:
- Безопасность работы. 1 Реализация типа std::string и предлагаемые им возможности делают работу с этим типом более безопасной. 1
- Дополнительные перегруженные операторы и методы. 4 Фактически std::string реализует те же массивы символов, но с дополнительными перегруженными операторами и методами (функциями). 4
- Упрощение определения строк. 1 Raw-литералы позволяют упростить определение строк, в которых используются специальные символы (табуляция, перевод на новую строку и другие). 1
Однако использование std::string для хранения необработанных данных, например, простых последовательностей байт, может быть нежелательно по следующим причинам: 2
- Семантика. 2 При виде типа std::string в коде ожидается серия читаемых символов, то есть текст. 2 Использование его в качестве контейнера для необработанных данных может запутать сопровождающих код. 2
- Безопасность типа. 2 Использование одного типа для двух нетривиальных целей может привести к ошибкам, так как пренебрегает механизмами безопасности языка C++. 2