Строки предназначены для обработки текста, а не двоичных данных. Таким образом, некоторые реализации строк могут использовать определенные возможности и не сохранять данные в том виде, в котором вы их вводили (например, преобразования в Юникод).
EDIT:
Чтобы уточнить, приведенный выше комментарий, я не говорил о каком-то конкретном языке, но тот факт, что определенные реализации строк (в языках, где строки , а не просто символьные массивы) внутренне хранят данные по-разному, поэтому даже если Вы создаете строку из байтового массива, внутренне она может быть сохранена как двухбайтовый массив. Кроме того, во многих языках строки являются неизменяемыми, что обычно не то, что вам нужно при работе с необработанными данными.
В любом случае, я не могу представить ни одного языка, который бы имел приличную реализацию строк, но не векторную реализацию. Почему бы не использовать это вместо своего контейнера?
EDIT:
Правда, большинство языков не позволяют переопределять операторы для массивов / векторов, и для этого есть веские причины (но это совсем другое обсуждение). Но кроме этого, у вас должно быть все, что вам нужно, даже если оно содержит немного меньше синтаксического сахара.