- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
嗯...我以为我理解正则表达式,我以为我理解迭代器,但 C++11 的正则表达式实现让我感到困惑...
一个我不明白的地方:阅读 regex token iterators ,我遇到了以下示例代码:
#include <fstream>
#include <iostream>
#include <algorithm>
#include <iterator>
#include <regex>
int main()
{
std::string text = "Quick brown fox.";
// tokenization (non-matched fragments)
// Note that regex is matched only two times: when the third value is obtained
// the iterator is a suffix iterator.
std::regex ws_re("\\s+"); // whitespace
std::copy( std::sregex_token_iterator(text.begin(), text.end(), ws_re, -1),
std::sregex_token_iterator(),
std::ostream_iterator<std::string>(std::cout, "\n"));
...
}
我不明白下面的输出是怎样的:
Quick
brown
fox.
由上面的 std::copy() 函数创建。我看不到循环,所以我对迭代是如何发生的感到困惑。或者换句话说,如何生成多行输出?
最佳答案
std::copy
将元素从输入范围复制到输出范围。在您的程序中,输入范围是使用正则表达式分隔符提取的三个标记。这些是打印到输出中的三个词。输出范围是 ostream_iterator
,它只获取给定的每个元素并将该元素写入输出流。
如果您使用调试器单步执行 std::copy
,您将看到它循环遍历输入范围的元素。
关于C++11 regex_token_iterator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12153573/
我正在尝试使用 C++ 中的正则表达式拆分字符串。这是最低限度的重现: #include #include int main() { std::string str("abc"); std
嗯...我以为我理解正则表达式,我以为我理解迭代器,但 C++11 的正则表达式实现让我感到困惑... 一个我不明白的地方:阅读 regex token iterators ,我遇到了以下示例代码:
对于以下代码: #include #include using namespace std; int main(int argc, char *argv[]) { regex reg("/")
regex_token_iterator 和 regex_iterator 有区别吗? 看起来他们都做同样的工作,但不确定哪一个性能更好? 最佳答案 两者之间确实存在差异,如果我们查看 cpprefe
string zodis; sregex_token_iterator it(eil.begin(), eil.end(), std::regex("[A-Za-z]+")); sregex_toke
下面的代码用于在“this subject has a subsequence”中查找“\b(sub)([^ ]*)”的匹配项。但我也想通过 regex_token_iterator 本身知道原始字符
我安装了 Visual Studio 2015 Update 2 Release Candidate,现在使用 sregex_token_iterator 似乎有问题,到目前为止似乎工作正常。为了验证
我想使用空白字符作为分隔符来标记 std::string,但是在一对引号之间不应考虑分隔符,也不允许使用其他引号。为此,我使用以下 regex (表示为原始字符串文字): R"((\"[^\"]*\"
我是一名优秀的程序员,十分优秀!