В C еще нет эквивалента.Это функция C ++ 11, которая объединяет две вещи.
Префикс u8
означает, что строка будет закодирована в UTF-8.Префикс R
означает, что это необработанный строковый литерал.Объединение их означает, что необработанная строка будет закодирована в UTF-8.
Необработанные строки - это способ обойти все экранирование, необходимые для регулярных выражений и так далее.Обычно в регулярном выражении вы должны использовать много символов "\".Но это экранирующий символ C / C ++, поэтому в строковых литералах вместо него нужно использовать «\».Необработанные строковые литералы позволяют вам избежать этого.В необработанных строках нет escape-символов.
Способ работы необработанного строкового литерала заключается в следующем.За префиксом R
следует, как обычно, "
.Но символы вплоть до первого (
символа все считаются частью разделителя необработанной строки.Таким образом, если вы начнете необработанную строку с R"foo(
, строка будет продолжаться до тех пор, пока синтаксический анализатор не увидит, )foo"
.
Таким образом, вы можете использовать "
, \
и практически любые другиесимволов, пока вы выбираете разделители.Разделитель также может быть пустым, поэтому R"(some stuff)"
эквивалентно "some stuff"
.Он заканчивается, когда видит )"
.