【问题标题】:Can regex be used with a character array in C++正则表达式可以与 C++ 中的字符数组一起使用吗
【发布时间】:2014-02-14 18:39:20
【问题描述】:

我正在开发一个不能使用字符串库文件的程序,而是使用 char 数组。我可以使用正则表达式,想知道是否有办法使用正则表达式和字符数组,甚至是正则表达式和单个字符?

我问的原因是当我尝试在匹配中使用我的 char 数组时,xUtility 会从“TEMPLATE CLASS iterator_traits”中抛出一堆错误

if(regex_match(userCommand[3], userCommand[8], isNumeric))

错误:

【问题讨论】:

  • 如果你可以使用正则表达式,你可以放心使用std::string。单个字符的正则表达式只是,有点,白痴......
  • 这个问题似乎离题了,因为它太本地化了。
  • 这是完全可以回答的。这甚至不是那么糟糕的问题。这只是一个相当愚蠢的要求。
  • 您始终可以使用 glibc 正则表达式函数(regexec 等)。它们是 C 函数,因此适用于 char 数组。
  • 如果您遇到错误并且需要帮助修复它们,您需要构造一个testcase。不要只转储没有任何上下文的单行代码,以及 IDE 中 25 个错误的屏幕截图。

标签: c++ regex arrays char


【解决方案1】:

std::regex_match 和它的朋友通过迭代器工作(以及不仅const std::string&而且const char*的重载)。

所以,是的,您绝对可以使用字符数组而不是 std::string。我建议阅读文档。


根据您的编辑:

if(regex_match(userCommand[3], userCommand[8], isNumeric))

如果userCommand 是数组,那么您将传入两个chars,而不是指针(“迭代器”)。

试试:

if(regex_match(&userCommand[3], &userCommand[8], isNumeric))

或:

if(regex_match(userCommand + 3, userCommand + 8, isNumeric))

【讨论】:

  • 谢谢,我没有想到指针,因为 xUtility 文件中出现了错误
  • @Dave:模板的常见缺陷。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多