隐式将 string 转换为 string_view

ech*_*Lee 7 c++ string implicit-conversion string-view

void Foo1(string_view view) {
... 
}

string str = "one two three";

Foo1("one two three"); // Implicitly convert char* to string_view

Foo1(str); 

Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 我想知道哪个构造函数将 char* 隐式转换为 string_view ,哪个构造函数将字符串隐式转换为 string_view ?

我知道构造函数 (4) 将 const char* 转换为 string_view 但我传递的是 char*。

son*_*yao 13

std::string_view有一个非explicit 转换构造函数Take 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有一个非explicit 转换运算符,支持从std::string到 的隐式转换std::string_view

constexpr operator std::basic_string_view<CharT, Traits>() const noexcept;