扩展string_view是未定义的行为吗
Is extending a string_view undefined behavior?
假设我们在s的某个部分上有字符串s和字符串视图sv,这样
sv.data() + sv.size() < s.data() + s.size()
换句话说,sv结束后的字符仍然是s的一部分。下面的行为是定义的还是未定义的?
string_view sv1 {sv.data(), sv.size()+1};
那么我们可以扩展字符串视图吗?
来自cppreference:
如果[s,s+count(不是有效范围(即使构造函数可能无法访问该范围的任何元素(,则行为是未定义的。
[sv.data((,sv.data((+sv.size((+1(是有效范围吗,因为它是s?的一部分
是,假设如下:
auto s = "The answer is: 42";
std::string_view sv{s, 5};
然后:
std::string_view sv1{sv.data(), sv.size() + 1};
是一个有效的范围。这完全违背了C++核心准则,可能不是设计代码的好方法。。。但是是的。。。它是有效的。
相关文章:
- 编译C++时未定义的引用
- OpenCV 3.4.3 中对 'cv::String::d eallocate()' 错误的未定义引用
- 从 std::string 到 std::array<char,size> 的 memcopy 额外数据是否是一种未定义的行为?
- Cpp 未定义引用 'Apache:: thrift:: transport:: TSocket:: TSocket (std:: string const&, int)'
- 对"cv::String::allocate(unsigned long)"的未定义引用
- C 与stat lib中的std :: string相关的未定义符号
- 对'PreconditionViolatedException::PreconditionViolatedException(std::string const&)'的未定义引用
- 链接webrtc本机时出错,因为未定义对具有std::string的方法的引用
- 对'std::string Helper::ToString<int>(int const&)'的未定义引用
- 错误未定义对"BP::D evice::Create(std::string const&)"的引用
- 'std::string::c_str()'如何返回不会导致内存泄漏或未定义的 C 字符串内容的 C 字符串?
- 未定义对“GradeBook::GradeBook(std::string)”的引用
- 标识符[string-value]未定义
- 未定义引用 'htmlcxx::HTML::P arserDom::p arseTree(std::string const&)'
- 错误:未定义对"cv::imread(std::string const&, int)"的引用
- 对 'json11::Json::d ump(std::string&) const' collect2 的未定义引用:错误:ld 返回 1 个退出状态
- 对 std::哈希<string>的未定义引用
- 未定义的引用 cv::imread(std::string const&, int)
- 使用c_str()时std::string的未定义行为
- 对矢量<String> G++ 链接器错误的未定义引用