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