Boost logo

Boost :

From: Klemens Morgenstern (klemens.morgenstern_at_[hidden])
Date: 2022-05-14 02:43:09


On Fri, 2022-05-13 at 21:09 +0300, Peter Dimov via Boost wrote:
> David Bien wrote:
> > I guess when I read the impl I think to myself: What this is
> > missing is a _length
> > member. But then it just becomes boost::string_view.
> >
> > What value added is there to this impl except that it is smaller
> > than
> > boost::string_view due to lacking a _length member?
>
> Please see
>
> https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1402r0.pdf
>
> No idea why this particular implementation doesn't store the size. I
> would.

I want to use it as a small wrapper around system-APIs, that can be
implicitly constructed from any matching string type, e.g.
boost::static_string as well as const char *. `strlen` would just be
unnecessary.

void set_env(cstring_view name, cstring_view value, error_code & ec)
{
   auto e = ::setenv(name.c_str(), value.c_str());
   if (!e)
       ec = some_error;
}

Using strlen seems unnecessary to me. I also stripped out most of the
functions to just have a bare-bone view of a cstring in the PR I
submitted: https://github.com/boostorg/utility/pull/100

Basic idea being: provide whatever you can do on a null terminated
string, for anything more just use a string_view. I don't think there's
much utility to the cstring_view outside of interaction with C-APIs.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk