【发布时间】:2018-01-03 16:34:15
【问题描述】:
使用带有-std=c++17标志的gcc-7.1编译,以下程序会引发错误:
#include <string_view>
void foo(const char* cstr) {}
void bar(std::string_view str){
foo(str);
}
错误信息是
In function 'void bar(std::string_view)':
error: cannot convert 'std::string_view {aka std::basic_string_view<char>}' to 'const char*' for argument '1' to 'void foo(const char*)'
foo(str);
我很惊讶没有转换为 const char*,因为其他库(abseil、bde)提供了类似的 string_view 类,它们隐式转换为 const char*。
【问题讨论】:
-
我的错误,
std::std::basic_string_view::data不保证以空字符结尾的字符串。
标签: c++ string c++17 string-view