c++:搜索忽略重音字符

标签 c++ regex boost unicode internationalization

所以...我有一个 STL vector ,需要使用用户提供的字符串进行搜索/过滤。 (只是提到这一点,以防在这个特定用例中有特定/更好的方法来做到这一点)

目前(这段代码是旧的)它是通过迭代它并用正则表达式匹配每个元素以查看它是否匹配来完成的。

然而,我们的问题源于重音字符。我们期望的行为是搜索匹配字符串而不考虑变音符号(即“telefono”也匹配“teléfono”,反之亦然)

是否有一种合适的方法来做到这一点,理想情况下无需求助于 boost 以外的库?

最佳答案

在询问有关字符串匹配(即 UTF-8 等)的问题时,了解字符编码是什么会很有帮助。据说处理变音符号的一种方法是在执行字符串之前将它们替换为等效的纯字符比较。您的匹配数据库将不包含任何变音符号,您将在比较之前清理您的搜索输入字符串。

关于c++:搜索忽略重音字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47663203/

相关文章:

C++ 函数的错误信息重定义

c++ - 实例化多个模板

c++ - 返回指向缓存在 std::map 中的项目的指针

c++ - Boost:is_any_of 产生多个错误

C++ - 将函数设置为等于参数

c++ - 如何将 dll 作为服务运行?

regex - fail2ban apache 重复 401 请求

java - 使用 java 正则表达式重新排序名称

regex - Node js Express 框架 - 正则表达式不起作用

c++ - 使用 `boost::variant` 在不传递类型信息的情况下存储和检索值