A std::string_view
doesn't provide a conversion to a const char*
because it doesn't store a null-terminated string. It stores a pointer to the first element, and the length of the string, basically. That means that you cannot pass it to a function expecting a null-terminated string, like foo
(how else are you going to get the size?) that expects a const char*
, and so it was decided that it wasn't worth it.
If you know for sure that you have a null-terminated string in your view, you can use std::string_view::data
.
If you're not you should reconsider whether using a std::string_view
in the first place is a good idea, since if you want a guaranteed null-terminated string std::string
is what you want. For a one-liner you can use std::string(object).data()
(note: the return value points to a temporary std::string
instance that will get destroyed after the end of the expression!).
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…