Анализатор обнаружил код, который потенциально можно оптимизировать. В коде присутствует избыточное создание объекта типа 'std::string', от которого можно избавиться.
У объекта класса 'std::string' с помощью функции 'c_str()' берется указатель на массив символов. Затем из этих символов конструируется новый объект типа 'std::string'. Например, это возможно, если неоптимальное выражение является:
Рассмотрим пример для случая с вызовом функции:
void foo(const std::string &s)
{
....
}
....
void bar()
{
std::string str;
....
foo(str.c_str());
}
Улучшить код очень просто - достаточно убрать вызов метода 'c_str()'. Рассмотрим пример упрощенного кода:
....
void bar()
{
std::string str;
....
foo(str);
}
Пример некорректного кода для оператора присваивания будет иметь вид:
std::string str;
....
std::string s = str.c_str();
Пример некорректного кода для оператора 'return' будет иметь вид:
std::string foo(const std::string &str)
{
....
return str.c_str();
}
Исправить ошибку в этих случаях следует аналогично случаю для вызова функции.