Возвращаемое значение std.regex.regex?
Я пытаюсь написать функцию, которая принимает входную строку, регулярное выражение (сделано std.regex.regex
из необработанной строки) и строку сообщения об ошибке, и попытайтесь сопоставить что-либо из входной строки с помощью регулярного выражения, отображая сообщение об ошибке, если совпадений нет. До сих пор я придумал следующую подпись:
string check_for_match (string input, Regex r, string error_message)
Тем не менее, похоже, что это не работает, как жалуется компилятор, говоря:
struct std.regex.Regex(Char) is used as a type
Так что я должен использовать вместо этого?
1 ответ
Это скомпилируется, если вы измените Regex
в Regex!char
,
Причина в том, что Regex
шаблон, который может использовать любой размер символа: char
для моделей UTF-8, wchar
для UTF-16 или dchar
для UTF-32. Компилятор говорит, что вам нужно создать тип, передав необходимые Char
аргумент там, чтобы использовать это здесь.
Поскольку вы работаете с string
, который состоит из char
s, Regex!char
это тип для использования.
string check_for_match (string input, Regex!char r, string error_message) { return null; }