C++11 正则表达式是否适用于 UTF-8 字符串?

2024-07-01

如果我想将 C++11 的正则表达式与 unicode 字符串一起使用,它们是否可以将 char* 作为 UTF-8 使用,还是必须将它们转换为 wchar_t* 字符串?


您需要测试您的编译器和您正在使用的系统,但理论上,如果您的系统具有 UTF-8 语言环境,它将受到支持。以下测试在 Clang/OS X 上对我返回 true。

bool test_unicode()
{
    std::locale old;
    std::locale::global(std::locale("en_US.UTF-8"));

    std::regex pattern("[[:alpha:]]+", std::regex_constants::extended);
    bool result = std::regex_match(std::string("abcdéfg"), pattern);

    std::locale::global(old);

    return result;
}

注意:这是在 UTF-8 编码的文件中编译的。


为了安全起见,我还使用了带有显式十六进制版本的字符串。它也起作用了。

bool test_unicode2()
{
    std::locale old;
    std::locale::global(std::locale("en_US.UTF-8"));

    std::regex pattern("[[:alpha:]]+", std::regex_constants::extended);
    bool result = std::regex_match(std::string("abcd\xC3\xA9""fg"), pattern);

    std::locale::global(old);

    return result;
}

Update test_unicode()对我来说仍然有效

$ file regex-test.cpp 
regex-test.cpp: UTF-8 Unicode c program text

$ g++ --version
Configured with: --prefix=/Applications/Xcode-8.2.1.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 8.0.0 (clang-800.0.42.1)
Target: x86_64-apple-darwin15.6.0
Thread model: posix
InstalledDir: /Applications/Xcode-8.2.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++11 正则表达式是否适用于 UTF-8 字符串? 的相关文章

随机推荐

  • 监听另一个应用程序中的事件

    假设我有两个用 C 编写的应用程序 第一个是引发名为 OnEmailSent 的事件的第三方应用程序 第二个是我编写的自定义应用程序 我想以某种方式订阅 OnEmailSent 即使是第一个应用程序 有什么方法可以将第二个应用程序附加到第一
  • 使用JQUERY滑动切换页面

    我在 stackoverflow 上搜索以查找在我的应用程序之间滑动的代码 并找到了下面的 jquery 代码 从答案中我读到它工作正常 但是当我将它放在我的页面上时 它无法工作 JavaScript div ui page live sw
  • 如何在golang中实现带附件的aws ses SendRawEmail

    我需要在 golang 中实现带附件的 Amazon ses SendRawEmail 我尝试使用以下代码 session err session NewSession svc ses New session aws Config Regi
  • Android 本地测试与仪表测试

    我正在尝试检查我的 API 在单元测试中是否可用 以确保它响应 200 现在 我的问题是我不太确定何时使用本地测试当我必须使用时Android 仪器测试 我知道我必须使用 Instrumented Tests 进行 UI 测试 但如何测试端
  • ActionBar 未在 API 16 中显示

    我是一个初学者 我制作了一个应用程序 其中包含导航抽屉以及 mainactivity 中的操作栏 它在 API 23 上完美运行 但在 API 16 中 操作栏没有显示 我搜索了许多关于 actionbar not 的链接显示 但他们在 A
  • 允许 bootstrap-ui 日期选择器中的 Moment.js 日期

    我正在尝试使用Bootstrap UI 的 http angular ui github io bootstrap 日期选择器 http angular ui github io bootstrap datepicker with Mome
  • VS2019 Roslyn编译器通用约束方法解析

    我们最近在代码库中发现了一个问题 VS2019 编译代码正常 但 VS 2017 失败 我为 Union 创建了一个扩展方法 它有一个通用 ISet 作为通用约束 using System using System Collections
  • 为什么成功消息在 ftplib 中被视为错误

    import ftplib server 192 168 1 109 user bob password likes sandwiches box ftplib FTP server box login user password s bo
  • 正确使用UseCallBack

    目前 每次更新查询参数时 我的代码都会重新呈现 一旦我删除查询参数 但是 我收到一条警告 指出 React Hook useCallback 缺少依赖项 query 要么包含它 要么删除依赖项数组react hooks exhaustive
  • osmar::get_osm() 下载 OSM 数据失败时出错:SYSTEM 或 PUBLIC,缺少 URI

    我正在关注一个tutorial https journal r project org archive 2013 RJ 2013 005 RJ 2013 005 pdf关于如何使用osmar包在R中下载OSM数据 所以代码是 library
  • 在 EAR 的不同 WAR 中分离相同的 jar

    目前我们面临一个问题 我们正在构建一个包含多个 war 文件的耳朵 其中 2 个 WAR 包含相同的 jar 这两个战争在部署期间都需要这些 jars 那么 ANT 有什么方法可以构建它 以便这些 jars 将位于一个位置 并且在耳朵部署期
  • 将带有渐变描边的 svg 导入到 paper.js 项目中

    Paper js 不显示带有从 SVG 导入的渐变的路径 这是一个例子https codepen io Husband pen LoomQo https codepen io Husband pen LoomQo正如您所看到的 带有描边颜色
  • 使用另一个数组的索引对 numpy 数组进行索引

    我有一个 numpy 数组 数据 其尺寸为 t z x y 这 维度代表时间 t 和三个空间维度 x y z 我有一个单独的索引数组 idx 其尺寸为 t x y 描述数据中的垂直坐标 idx 中的每个值描述一个 数据中的单个垂直级别 我想
  • ARM 中的 ROM 和 RAM

    我正在研究 ARM 处理器 我想知道所使用的 ROM 和 RAM 是否与我假设的有很大不同 例如 对于具有以下内存表的程序 Program Size Code 1264 RO data 16 RW data 0 ZI data 1384 它
  • 线性回归,在 MySQL 中求斜率

    我正在尝试查找以 DATETIME 作为 x 轴 以 y 轴为数字的数据集的斜率 我已经尝试了多种方法 当我将数据插入 Excel 时 没有任何东西可以匹配直线的斜率 它偏离了多个数量级 这就是我现在所拥有的 但它给我的斜率为 1 13e
  • 连接列表时 int 对象不可迭代?

    def get fail pass average number list for number in number list under 50 list over 50 list if number gt 50 over 50 list
  • 如何从 PHP 中的两个日期范围中提取每周一和每两周的周一?

    我正在使用臭名昭著的 jQuery UI 的日期选择器 并在我的表单中选择两个日期的范围 首先代表的是starting另一个代表日期end date 我现在需要的是算法 一些提示和方向或帮助者来计算这两个日期之间的每个星期一 例如 star
  • bootstrap jQuery 验证插件..错误放置问题

    所以我已经在我的代码中实现了 jquery 验证插件 如下面的代码所示 但是我在显示所有选项之后的错误代码时遇到了问题 此时它被放置在第一个按钮选项中 任何人都可以帮助更改我在 JavaScript 中的错误放置代码 以便将错误放置在每个组
  • 有没有办法让搜索机器人忽略某些文本? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有我的博客 如果你愿意 你可以从我的个人资料中看到它 它是新鲜的 谷歌机器人解析结果也是如此 结果令我震惊 显然 我的网站上最常见的两个
  • C++11 正则表达式是否适用于 UTF-8 字符串?

    如果我想将 C 11 的正则表达式与 unicode 字符串一起使用 它们是否可以将 char 作为 UTF 8 使用 还是必须将它们转换为 wchar t 字符串 您需要测试您的编译器和您正在使用的系统 但理论上 如果您的系统具有 UTF