#regex #c 11 #stl #char16-t
#регулярное выражение #c 11 #stl #char16-t
Вопрос:
Короче говоря, что изначально неправильно в следующем коде?
#include <regex>
int main() {
std::regex_match(u" ", std::basic_regex<char16_t>{u" "});
}
Он выдает ошибки с
$ g -std=c 17 main.cpp -o main
$ ./main
terminate called after throwing an instance of 'std::bad_cast'
what(): std::bad_cast
Aborted (core dumped)
Подробная информация:
$ g --version
g (GCC) 10.2.0
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Ответ №1:
Стандартная библиотека C не поддерживает регулярные выражения с char16_t или char32_t в Юникоде. Есть предложение по решению этой проблемы, но его нет в C 20: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0169r0.html