The analyzer has detected a code that can be optimized: the code contains an excessive operation when a 'std::string' object is created, and we can eliminate this.
We use the 'c_str()' function to take a pointer to a character array from the 'std::string' object. Then we construct a new object of the 'std::string' type from these characters. For instance, it can happen if the non-optimal expression is:
Here is a sample for the case with a function call:
void foo(const std::string &s) { .... } .... void bar() { std::string str; .... foo(str.c_str()); }
The code is very easy to improve: you just need to remove the call of the 'c_str()' method:
.... void bar() { std::string str; .... foo(str); }
This is a sample of incorrect code for the case with an assignment operator:
std::string str; .... std::string s = str.c_str();
And this is an incorrect code for the 'return' operator:
std::string foo(const std::string &str) { .... return str.c_str(); }
The errors in the last two cases are fixed in the same way as with the function call.