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