Как мне клонировать содержимое std::string в новый массив char[]

Учитывая std::stringКак я могу кратко (то есть вызов одной строки / функции) выделить массив символов, свободный с помощью delete[] подходящего размера и клонировать содержимое строки в массив char как завершенную нулем строку?

Я мог бы сделать это:

m_name = new char[name.size() + 1];
(void)name.copy(m_name, name.size());
m_name[name.size()] = '\0';

Но это не лаконично. Что мне действительно нужно, так это функция вроде:

size_type std::basic_string::clone(CharT** dest);
CharT* std::basic_string::clone();

Этого не существует, насколько я могу видеть.

Компания, для которой я работал, внедрила собственную стандартную библиотеку, которая включала strnewdup() функция, которая работала так же, как strdup() но используя new, чтобы избежать дублирования кода. Нечто подобное будет работать нормально, но я не могу найти ссылку на что-то подобное в стандартной библиотеке C++.

Я бы предпочел решение, которое использует только стандартную библиотеку C++, а не что-то вроде Boost или написания собственного кода.

1 ответ

Решение

Библиотека C++ не реализует необходимую функциональность.

Облом.

Другие вопросы по тегам