我正在检索和存储可以使用 std::string::erase 或 std::string::substr 的字符串的一部分。
我想知道以下哪种方法更快(完成时间更短)和高效(更少的内存分配/重新分配)。此外,有关擦除和 substr 如何分配/重新分配内存的任何信息都将非常有帮助。谢谢!
std::string nodeName("ABCD#XYZ#NodeName");
const std::string levelSeparator("#");
选项 1:使用 std::string::substr
std::string::size_type nodeNameStartPosition = nodeName.rfind(levelSeparator);
if (nodeNameStartPosition != std::string::npos)
{
nodeNameStartPosition += levelSeparator.length();
nodeName = nodeName.substr(nodeNameStartPosition);
}
选项 2:使用 std::string::erase
std::string::size_type nodeNameStartPosition = nodeName.rfind(levelSeparator);
if (nodeNameStartPosition != std::string::npos)
{
nodeNameStartPosition += levelSeparator.length();
nodeName = nodeName.erase(0, nodeNameStartPosition);
}