【问题标题】:Why does std::regex_match generate different results为什么 std::regex_match 会产生不同的结果
【发布时间】:2021-11-10 04:12:32
【问题描述】:

我正在尝试使用 std::regex 来验证我的 c++11 项目中文件中的一些变量。

现在我需要验证一个字符串是否是一个有效的 URL。这是我的代码:https://godbolt.org/z/4Pn9eYEce

如您所见,它按预期工作。它返回一个true

但是,当我在我的服务器上运行相同的代码时,它会返回一个 false

我真的不知道为什么。

我的服务器是Ubuntu 16.04.4 LTS,GCC的版本是5.4.0 20160609(Ubuntu 5.4.0-6ubuntu1~16.04.11)。

【问题讨论】:

标签: c++ regex c++11 gcc


【解决方案1】:

必须是编译器的东西,在gcc5.4上用-Wformat -std=c++17编译, 然后运行它也会返回 0。

https://godbolt.org/z/a8o9x9nWP

最好将编译器更新到新版本。

【讨论】:

  • 但是我无权升级我的编译器...好吧,也许我现在不得不放弃这种验证...
  • 阅读:stackoverflow.com/questions/12530406/…。似乎他们在 5.4 中也没有做到这一点。那你可以为你更新编译器吗?我知道我会开始四处询问以解决真正的问题;)不要轻易放弃。
  • 这个链接有帮助,至少我可以根据我的 GCC 版本控制返回值......现在我会告诉我的团队这个问题,但领导者可能会决定升级编译器2 或 3 年……哈哈。
  • 在安装了新编译器的测试系统上运行测试构建,然后运行单元/集成测试。这将表明升级前的风险程度。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-08
  • 2017-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多