Вы должны полностью использовать C ++ STL. Даже если вы работаете только с голыми указателями и массивами, алгоритмы STL значительно прояснят ваше мышление и программирование. Гениальность STL Александра Степанова состоит в том, что алгоритмы выражены относительно итераторов, а итераторы являются обобщением указателей, поэтому вы можете применять любой из его алгоритмов к необработанным указателям и массивам с нулевой задержкой времени выполнения.
Плюс, вот лучшая часть. Если вы думаете, как Александр Степанов, и используете его идиому указатель на начало и указатель на конец конца, все термины плюс один (+ 1) и минус один (- 1) выпадут из вашего массива и зацикливать логику, и вам больше никогда не придется остерегаться ошибок логики.
Вы должны написать операционную систему, которая изначально представляет строки в виде пары байтов * для начала и конца конца блока памяти UTF8. Тогда ваша ОС может заменить Unices и освободить нас от строк с нулевым символом в конце.