#include <boost/regex.hpp>
#include <string>
#include <vector>
#include <iostream>
int main(int argc, char* argv[]) {
std::string text = argv[1];
std::string patterns = argv[2];
boost::regex regex = boost::regex(patterns);
boost::smatch match;
std::cout << boost::regex_search(text, match, regex) << std::endl;
}
Если я запустил программу через вход hello¿ ¿
(содержащий символ не ASCII с кодировкой UTF-8), он возвращает 0
, то есть не найден, но если я запустил его поверх ввода hel√ √ (снова содержащий не-ascii) он возвращает 1, то есть найден.
Мой вопрос: Каково ожидаемое поведение boost::regex
(т.е. версия ascii) при выполнении над utf-символами?
Изменить: спасибо за все комментарии, меня все еще интересует, почему именно 1 выводится, так как текст и регулярное выражение содержат символы, отличные от ascii. Я предполагаю, что байты интерпретируются как ascii, и поэтому они соответствуют.