gpt4 book ai didi

c++ - 扩展string_view是未定义的行为吗?

转载 作者:行者123 更新时间:2023-12-01 14:54:36 27 4
gpt4 key购买 nike

假设我们在s的某些部分具有字符串s和string_view sv,使得

sv.data() + sv.size() < s.data() + s.size()

换句话说,sv结束后的字符仍然是s的一部分。以下行为是已定义还是未定义?

string_view sv1 {sv.data(), sv.size()+1};

那么我们可以扩展string_view吗?

来自cppreference:

The behavior is undefined if [s, s+count) is not a valid range (even though the constructor may not access any of the elements of this range).



由于[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++ - 扩展string_view是未定义的行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58774814/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com