Some checks failed
Docker. / Ubuntu (push) Has been cancelled
User-agent updater. / User-agent (push) Failing after 15s
Lock Threads / lock (push) Failing after 10s
Waiting for answer. / waiting-for-answer (push) Failing after 22s
Close stale issues and PRs / stale (push) Successful in 13s
Needs user action. / needs-user-action (push) Failing after 8s
Can't reproduce. / cant-reproduce (push) Failing after 8s
44 lines
1.0 KiB
C++
44 lines
1.0 KiB
C++
// Range v3 library
|
|
//
|
|
// Copyright Eric Niebler 2013-present
|
|
//
|
|
// Use, modification and distribution is subject to the
|
|
// Boost Software License, Version 1.0. (See accompanying
|
|
// file LICENSE_1_0.txt or copy at
|
|
// http://www.boost.org/LICENSE_1_0.txt)
|
|
//
|
|
|
|
|
|
#include <range/v3/all.hpp>
|
|
#include <iostream>
|
|
|
|
using namespace ranges;
|
|
|
|
// A range that iterates over all the characters in a
|
|
// null-terminated string.
|
|
class c_string_range
|
|
: public view_facade<c_string_range>
|
|
{
|
|
friend range_access;
|
|
char const * sz_;
|
|
char const & read() const { return *sz_; }
|
|
bool equal(default_sentinel_t) const { return *sz_ == '\0'; }
|
|
void next() { ++sz_; }
|
|
public:
|
|
c_string_range() = default;
|
|
explicit c_string_range(char const *sz) : sz_(sz)
|
|
{
|
|
assert(sz != nullptr);
|
|
}
|
|
};
|
|
|
|
int main()
|
|
{
|
|
c_string_range r("hello world");
|
|
// Iterate over all the characters and print them out
|
|
ranges::for_each(r, [](char ch){
|
|
std::cout << ch << ' ';
|
|
});
|
|
// prints: h e l l o w o r l d
|
|
}
|