Как мне клонировать содержимое 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++ не реализует необходимую функциональность.
Облом.