【问题标题】:Is there a way to check multiple escape characters with one escape character in C++? [closed]有没有办法在 C++ 中用一个转义字符检查多个转义字符? [关闭]
【发布时间】:2013-08-30 21:11:54
【问题描述】:

这是一个形式尴尬的问题。

我现在的项目是从串口读取 ASCII 行。我正在使用一个私有库,它逐行读取输出。每行都用 \r 字符标识。我受到这个库的限制,因为我必须指定结束该行的转义字符。

无论如何,我找到了this documentation online,特别是我对转义字符 \> 和 \s 很感兴趣,因为 \> 检查字符串的结尾,而 \s 检查是否有任何空白转义字符。

但是,我认为这在 C++ 中默认不可用。我什至不确定该文档的语言是什么!

所以我问stackoverflow的大师;有没有办法用一个转义字符检查 C++ 中的多个转义字符?

感谢阅读..

【问题讨论】:

  • 这不是 C++ 转义序列。该文档适用于正则表达式。
  • 是的,这完全不清楚。首先,如果您知道您的来源产生已知字符,那么您为什么对检测其他人感兴趣?第二,我不知道你说的“一个字符检查多个字符”是什么意思?

标签: c++ string serial-port escaping ascii


【解决方案1】:

您可以尝试使用 C++11 标准中的std::regex

如果您的编译器不支持,如果您不介意使用 Qt 5,也可以使用 QRegularExpression

您也可以为此使用 boost 库中的 regex

如果您想使用 C 来支持旧的编译器,您甚至可以使用 regex(3)

【讨论】:

  • 或来自 POSIX C 库的 Posix 的 <regex.h>
  • @H2CO3:很好,我刚刚也添加了相关文档!
  • 谢谢,我明白了。
【解决方案2】:

是的,这绝对是一个“形式怪异的问题”。

关于第二点,您将转义字符与正则表达式构造/转义混淆了。第二个仅在正则表达式中有效。除非您的图书馆支持它们,否则您将无法成功使用它们。 C++ 不提供对正则表达式的任何直接支持。只能通过库函数。

【讨论】:

  • 其实,C++11 确实...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-04
相关资源
最近更新 更多