16得票1回答
当传递临时的std::string时,string_view的行为是什么?

我刚遇到了一些误解:至少在libc++实现中,std::experimental::string_view有以下简洁的实现:template <class _CharT, class _Traits....> class basic_string_view { public: ...

21得票1回答
替换全局常量字符数组为constexpr string_view有什么需要注意的地方吗?

我们的团队正在使用一个超过10年的C++代码库,并且最近切换到了C++17编译器。因此,我们正在寻找现代化我们的代码的方法。在YouTube上的一次会议讲座中,我听说建议用constexpr string_view替换const char*全局字符串。 由于我们的代码中有很多这样的const...

9得票1回答
从函数返回 string_view

我正在编写很多解析器代码,其中string_view表现出色,并且已经喜欢上了这种类型。最近我读了ArthurO'Dwyer的文章std::string_view is a borrow type,他得出结论:只要它们“...仅出现为函数参数和for循环控制变量”(有几个例外),就可以使用st...

374得票5回答
std::string_view 为什么比 const std::string& 更快?

std::string_view 已经进入C++17,并且广泛推荐使用它来代替 const std::string&。 原因之一是性能。 有人可以解释一下当作为参数类型时,std::string_view与const std::string&相比究竟如何更快?(假设在被调用...

12得票2回答
在只读场景下,何时需要使用以空字符结尾的字符串?

我一直在尝试使用std::string_view库,并考虑将我正在开发的代码库尽可能地改用std::string_view。然而,在我阅读的许多关于何时以及在哪里使用std::string_view而不是const std::string &的主题线程中,我看到很多答案都说:“当您不需...

135得票2回答
为什么不支持将std::string和std::string_view连接起来?

自从C++17之后,我们拥有了 std::string_view ,它是一种轻量级的字符序列视图,避免不必要的数据复制。现在通常建议使用std::string_view代替const std::string&参数。 然而,很快就会发现,从const std::string&切换...

7得票1回答
std::basic_string_view<T>和std::span<T>的区别

我正在解析二进制网络数据,并希望尽可能减少内存分配。但现在我意识到有两个非常相似的概念,它们都可能足够适用于我的情况,那就是std::basic_string_view&lt;T&gt;和std::span&lt;T&gt;。 所以我想知道这两者之间的区别,是否有一种比另一种更优?一个明显的...

19得票1回答
为什么std::string没有一个直接接收std::string_view的构造函数?

为了允许从std::string_view构造std::string,有一个模板构造函数。 template&lt;class T&gt; explicit basic_string(const T&amp; t, const Allocator&amp; alloc = Allocator...

8得票1回答
从一组字符构建一个 string_view

span可以从一个范围构造,但string_view不能从一系列字符构造。 因此,例如,需要使用以下代码: // assume chars_span is a span of chars std::cout &lt;&lt; std::string_view(chars_span.data...

16得票2回答
为什么要使用string_view而不是通用的container_view<T>?

我发现新的C++17标准中的string_view有点冗余。 我们已经有了一系列简单机制将数据传递给被调用者,而且没有太多的开销,现在又出现了另一个仅适用于一种容器类型的机制。 我不明白为什么只为字符串提供这种机制,而不是为其他容器提供更普遍的类型。一个合理的答案是我们已经有了这些解决方案...