Всё очень сильно зависит от того, фраза у вас ограничена англоязычным текстом (символы ASCII), или может быть русскоязычной (или китаеязычной).
В 1-м случае вы можете делать с символами всё, что пишут в книжках ... или что вам сейчас здесь насоветуют в ответах. ;-)
Во 2-м случае, если вы храните строку в char[] / string, то вы должны быть готовы к тому, что strlen() будет давать ошибочные значения, find() и другие подобные вещи будут работать "не так" ... и, в общем, вы не сможете работать с содержимым: искать, делить на части, выделять подстроки. Но можете так хранить, сравнивать и выводить строки (т.е. работать как с единым целым).
Другой вариант - хранить такие строки как "широкие символы", 4-х байтные: wchar_t[] / wstring. Но там есть свои неудобства...