给定一个std::string
,我如何简洁地(即单行/函数调用(分配一个可用大小的delete[]
的字符数组,并将字符串的内容克隆到字符数组中作为以空结尾的字符串?
我可以这样做:
m_name = new char[name.size() + 1];
(void)name.copy(m_name, name.size());
m_name[name.size()] = ' ';
但它并不简洁。我真正需要的是这样的函数:
size_type std::basic_string::clone(CharT** dest);
CharT* std::basic_string::clone();
据我所知,这并不存在。
我曾经工作的一家公司实现了他们自己的标准库,其中包括一个strnewdup()
函数,它的工作方式与strdup()
一样,但使用new
,以避免代码重复。这样的东西可以正常工作,但我在标准C++库中找不到任何对类似内容的引用。
我更喜欢仅使用标准C++库的解决方案,而不是像 Boost 或编写我自己的代码这样的东西。
C++库不实现所需的功能。
无赖。