如何使用const char初始化string_view的默认值

res*_*net 3 c++ c++17

我有办法

void func(int bar, std::string_view sv = {})
Run Code Online (Sandbox Code Playgroud)

但是现在我想使用以下方法设置sv的默认值

const char def = 'X'
Run Code Online (Sandbox Code Playgroud)

我该如何实现?谢谢!

Max*_*kin 6

单程:

const char def = 'X';
void func(int bar, std::string_view sv = {&def, 1});
Run Code Online (Sandbox Code Playgroud)

请注意,对于没有零终止符的字符串std::string_view sv = {&def, 1}产生a std::string_view,这可能会或可能不会出现问题。

如果您需要以0结尾的std::string_view,则:

std::string_view const def_sv = "X";
void func(int bar, std::string_view sv = def_sv);
Run Code Online (Sandbox Code Playgroud)

要不就:

void func(int bar, std::string_view sv = "X");
Run Code Online (Sandbox Code Playgroud)

  • 零也不是带有“ X”的视图的一部分。(您不能依靠`* view.end()`的有效性)。 (2认同)