在行结束前查找最后一个值

时间:2015-11-08 12:04:57

标签: c++ regex for-loop iterator

我正在开发一个程序,它解析标签并通过转义码改变控制台中文本的颜色。从cin逐行读取输入,并且当<>中的标签读取时。读取后,我会根据我确定有效转义码的地图进行检查。

我的输出使用以下输出传送到标准输出:

unserialize

我的问题是除非我在行上有偶数个代码我无法打印所有输入,因为它的最后一个在smatch m.suffix()

我用来解析正则表达式的一行是

cout << m.prefix() << getFromMap(tagMap, stack.back());

现在我需要设计一个if语句,当下一个语句触发时== uline.cend() 所以我可以

for (auto it = uline.cbegin(), end = uline.cend(); regex_search(it, end, m, tag); it = m.suffix().first)

相关的完整循环转储:

cout<<m.suffix();

1 个答案:

答案 0 :(得分:0)

您似乎需要将整个输入视为单个文档,因为打开和关闭标记可能位于不同的行上。一种简单的方法是在输入流而不是每一行上使用迭代器:

for (auto it = istream_iterator<char>(cin), end = istream_iterator<char>();
    regex_search(it, end, m, tag); it = m.suffix().first) {
    // ...