V805. Decreased performance. It is inefficient to identify an empty string by using 'strlen(str) > 0' construct. A more efficient way is to check: str[0] != '\0'.

The analyzer detected a construct that can be optimized. To determine whether a code string is empty or not, the strlen function or some other identical function is used.

For example:

if (strlen(strUrl) > 0)

This code is correct, but if it is used inside a long loop or if we handle long strings, such a check might be inefficient. To check if a string is empty or not, we just have to compare the first character of the string with 0. This is an optimized code:

if (strUrl[0] != '\0')

Sometimes the V805 warning helps to detect excessive code. In one application we have found a code fragment like the following one:

string path;
if (strlen(path.c_str()) != 0)

Most likely, this code appeared during careless refactoring when the type of the path variable had been changed from a simple pointer to std::string. This is a shorter and faster code:

if (!path.empty())

Bugs Found

Checked Projects
Collected Errors
14 435
This website uses cookies and other technology to provide you a more personalized experience. By continuing the view of our web-pages you accept the terms of using these files. If you don't want your personal data to be processed, please, leave this site. Learn More →