std::string_view
具有一个非显式的转换构造函数,接受const char*
参数,支持从const char*
隐式转换到std::string_view
。
constexpr basic_string_view(const CharT* s);
当你说:
但我传递的是
char*
。
实际上传递的是字符串字面值(例如"one two three"
),其类型为const char[14]
(包括空字符'\0'
),可以退化为const char*
。
std::string
也具有一个非显式的转换运算符,支持从std::string
隐式转换到std::string_view
。
constexpr operator std::basic_string_view<CharT, Traits>() const noexcept;
这是关于编程的内容,它涉及到以下链接:https://en.cppreference.com/w/cpp/string/basic_string/operator_basic_string_view:
此外还有string_view的复制构造函数(2)。
std::string
定义了一个转换运算符到std::string_view
,并且它是隐式的,仅仅因为它没有声明为explicit
。std::string::c_str()
不是一个转换运算符,只是一个普通的方法。std::string
没有定义任何到char*
的转换运算符,无论是隐式还是显式。 - Remy Lebeau