Вы можете никогда выделить буквальные, динамически или иным образом. Литералы - это литералы; они запекаются по определению.
Вы можете, конечно, динамически выделить char
и инициализировать его из литерала, как вы это делали в своем примере.
Что касается вашего вопроса, хотя, инициализация из строковых литералов является немного более сложным, потому что вы можете только получить свой собственный char[N]
из строкового литерала инициализации с помощью обычной инициализации синтаксиса:
char[] str = "hello"; // special rules apply here
и не возможно инициализировать динамически распределенный массив. В синтаксисе new[]
просто невозможно сделать это.
Вы можете динамически выделить указатель на строку буквального:
const char** s = new const char*("hello");
но это совершенно бесполезно.
Ближайший я думаю, что вы можете получить:
char* str = new char[5]{'h','e','l','l','o'};
Но, если честно, просто использовать std::string
вместо:
std::string str("hello");
Он был изобретен специально для решения этих виды проблем.
языка программирования Что вы спрашиваете это? – Hybris95
Это для C++. – anerk
Вы можете привязать свою строку только для чтения к новому динамически распределенному буферу? – Evert