我正在檢索並存儲可以使用std :: string的字符串的一部分: :擦除或std :: string :: substr。Whis獲取字符串的一部分更快,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 ::擦除
std::string::size_type nodeNameStartPosition = nodeName.rfind(levelSeparator);
if (nodeNameStartPosition != std::string::npos)
{
nodeNameStartPosition += levelSeparator.length();
nodeName = nodeName.erase(0, nodeNameStartPosition);
}
試試吧。 (填寫) –
這個比較有什麼意義?這兩個做不同的事情。如果你想得到一個子字符串,請執行'substr'。如果你想從一個字符串中刪除,使用'erase'。 –
它可能是基準嗎? – lc2817