Я хочу объявить один и тот же шаблон регулярного выражения для обоих языков. Для TCL я делаю это
set pattern "\d\s\S"
но для C ++ я должен сделать это для одного шаблона
boost::regex pattern("\\d\\s\\S");
иначе компилятор C ++ скажет нам следующее:
warning C4129: 'd' : unrecognized character escape sequence
поэтому почему TCL не пытается найти escape-символы \ d \ s \ S и просто игнорирует \
-s, но C ++ пытается и отстой?
PS PHP работает как TCL, как я помню.
Это как раз то, как отличаются C ++ и PHP; в PHP символ, следующий за "rnvtx"
сопоставляется с небольшим набором специальных символов (я считаю, "rnvtx"
). Если совпадение не удастся, оно будет продолжаться без изменения значения.
Однако C ++ ожидает, что персонаж будет в этом маленьком наборе (я думаю, что набор больше btw), но если совпадение не получится, вы увидите ошибку.
C ++ имеет концепцию последовательности Escape Escape . Последовательности Escape, которые принимают форму \c
(«c», являющийся символом), используются для определения определенных специальных символов в строковых литералах, поэтому следует, что обратные косые черты сами по себе также должны быть экранированы, чтобы обозначить, что особый символ не является подразумевается.