我正在开发一个程序,它解析标签并通过转义码改变控制台中文本的颜色。从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();
答案 0 :(得分:0)
您似乎需要将整个输入视为单个文档,因为打开和关闭标记可能位于不同的行上。一种简单的方法是在输入流而不是每一行上使用迭代器:
for (auto it = istream_iterator<char>(cin), end = istream_iterator<char>();
regex_search(it, end, m, tag); it = m.suffix().first) {
// ...