Они так же безопасны, как и ваши практики программирования.Пока вы знаете, как правильно с ними работать, они совершенно безопасны.Для тех, чей стиль программирования заставляет думать о слоне в посудной лавке, такие строки могут быть небезопасными.Но тогда то же самое можно сказать и обо всех языках C / C ++.
Ваш исходный пример однострочного объявления уже страдает от небезопасных проблем стиля.И в C, и в C ++ строковые литералы являются неизменяемыми l-значениями.Не стоит создавать [долговечные] неконстантные указатели, указывающие на такие литералы.Обычно это должно выглядеть следующим образом:
const char *str = "This is a c-styled string";
Обратите внимание на дополнительный const.
(Это конкретное правило не всегда соблюдается в C, но обычно его необходимо нарушать только в каком-то хорошо контролируемом локализованном идиоматическом коде.)