[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / clang-tools-extra / docs / clang-tidy / checks / performance / inefficient-string-concatenation.rst
blob92b6b4e0370d639c38e3cbf58531291b7b08ac99
1 .. title:: clang-tidy - performance-inefficient-string-concatenation
3 performance-inefficient-string-concatenation
4 ============================================
6 This check warns about the performance overhead arising from concatenating
7 strings using the ``operator+``, for instance:
9 .. code-block:: c++
11     std::string a("Foo"), b("Bar");
12     a = a + b;
14 Instead of this structure you should use ``operator+=`` or ``std::string``'s
15 (``std::basic_string``) class member function ``append()``. For instance:
17 .. code-block:: c++
19    std::string a("Foo"), b("Baz");
20    for (int i = 0; i < 20000; ++i) {
21        a = a + "Bar" + b;
22    }
24 Could be rewritten in a greatly more efficient way like:
26 .. code-block:: c++
28    std::string a("Foo"), b("Baz");
29    for (int i = 0; i < 20000; ++i) {
30        a.append("Bar").append(b);
31    }
33 And this can be rewritten too:
35 .. code-block:: c++
37    void f(const std::string&) {}
38    std::string a("Foo"), b("Baz");
39    void g() {
40        f(a + "Bar" + b);
41    }
43 In a slightly more efficient way like:
45 .. code-block:: c++
47    void f(const std::string&) {}
48    std::string a("Foo"), b("Baz");
49    void g() {
50        f(std::string(a).append("Bar").append(b));
51    }
53 Options
54 -------
56 .. option:: StrictMode
58    When `false`, the check will only check the string usage in ``while``, ``for``
59    and ``for-range`` statements. Default is `false`.