performance-inefficient-string-concatenation

此检查会警告使用 operator+ 连接字符串时产生的性能开销,例如

std::string a("Foo"), b("Bar");
a = a + b;

您应该使用 operator+=std::string 的 (std::basic_string) 类成员函数 append() 来代替这种结构。例如

std::string a("Foo"), b("Baz");
for (int i = 0; i < 20000; ++i) {
    a = a + "Bar" + b;
}

可以用更有效的方式改写为

std::string a("Foo"), b("Baz");
for (int i = 0; i < 20000; ++i) {
    a.append("Bar").append(b);
}

这也可以改写

void f(const std::string&) {}
std::string a("Foo"), b("Baz");
void g() {
    f(a + "Bar" + b);
}

可以用更有效的方式改写为

void f(const std::string&) {}
std::string a("Foo"), b("Baz");
void g() {
    f(std::string(a).append("Bar").append(b));
}

选项

StrictMode

当为 false 时,检查将只检查 whileforfor-range 语句中的字符串使用情况。默认值为 false