| .. title:: clang-tidy - modernize-raw-string-literal |
| |
| modernize-raw-string-literal |
| ============================ |
| |
| This check selectively replaces string literals containing escaped characters |
| with raw string literals. |
| |
| Example: |
| |
| .. code-blocK:: c++ |
| |
| const char *const Quotes{"embedded \"quotes\""}; |
| const char *const Paragraph{"Line one.\nLine two.\nLine three.\n"}; |
| const char *const SingleLine{"Single line.\n"}; |
| const char *const TrailingSpace{"Look here -> \n"}; |
| const char *const Tab{"One\tTwo\n"}; |
| const char *const Bell{"Hello!\a And welcome!"}; |
| const char *const Path{"C:\\Program Files\\Vendor\\Application.exe"}; |
| const char *const RegEx{"\\w\\([a-z]\\)"}; |
| |
| becomes |
| |
| .. code-block:: c++ |
| |
| const char *const Quotes{R"(embedded "quotes")"}; |
| const char *const Paragraph{"Line one.\nLine two.\nLine three.\n"}; |
| const char *const SingleLine{"Single line.\n"}; |
| const char *const TrailingSpace{"Look here -> \n"}; |
| const char *const Tab{"One\tTwo\n"}; |
| const char *const Bell{"Hello!\a And welcome!"}; |
| const char *const Path{R"(C:\Program Files\Vendor\Application.exe)"}; |
| const char *const RegEx{R"(\w\([a-z]\))"}; |
| |
| The presence of any of the following escapes can cause the string to be |
| converted to a raw string literal: ``\\``, ``\'``, ``\"``, ``\?``, |
| and octal or hexadecimal escapes for printable ASCII characters. |
| |
| A string literal containing only escaped newlines is a common way of |
| writing lines of text output. Introducing physical newlines with raw |
| string literals in this case is likely to impede readability. These |
| string literals are left unchanged. |
| |
| An escaped horizontal tab, form feed, or vertical tab prevents the string |
| literal from being converted. The presence of a horizontal tab, form feed or |
| vertical tab in source code is not visually obvious. |