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 时,检查将只检查
while
、for
和for-range
语句中的字符串使用情况。默认值为 false。