Возвращаемое значение 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, который состоит из chars, Regex!char это тип для использования.

string check_for_match (string input, Regex!char r, string error_message) { return null; }
Другие вопросы по тегам