C++ 如何使用const char初始化string_视图的默认值

C++ 如何使用const char初始化string_视图的默认值,c++,c++17,C++,C++17,我有办法 void func(int bar, std::string_view sv = {}) 但是现在我想使用 const char def = 'X' 我如何做到这一点?谢谢大家! 单向: const char def = 'X'; void func(int bar, std::string_view sv = {&def, 1}); 请注意,std::string_view sv={&def,1}为没有零终止符的字符串生成一个std::string_view,这可能是问

我有办法

void func(int bar, std::string_view sv = {})
但是现在我想使用

const char def = 'X'
我如何做到这一点?谢谢大家!

单向:

const char def = 'X';
void func(int bar, std::string_view sv = {&def, 1});
请注意,
std::string_view sv={&def,1}
为没有零终止符的字符串生成一个
std::string_view
,这可能是问题,也可能不是问题

如果需要以零结尾的
std::string\u视图
,则:

std::string_view const def_sv = "X";
void func(int bar, std::string_view sv = def_sv);
或者只是:

void func(int bar, std::string_view sv = "X");

对于
“X”
,零也不是视图的一部分。(你不能依赖
*view.end()
)的有效性。@Jarod42这是
std::string\u视图
的一个非常粗糙的边缘,它想成为
char const*
std::string
的一个公分母。啊&是我错过的。完全忘记了指向字符串开头的指针,在这里摆弄了很长时间。非常感谢。也很好,每个人都让我想起了这里奇怪的边缘条件,谢谢