16得票2回答
C++17中比较string_view和string时的歧义问题

我看到 std::string_view 和 std::string 都具有对称的 operator==(), 对于 std::string, 它有一个构造函数接受std::string_view和可以将自身转换为 std::string_view 的运算符。所以当我们尝试使用 operato...

15得票3回答
正确的方式打印 std::string_view 是什么?

我刚接触C++17和std::string_view,了解到它们不是以空字符结尾的字符串类型,必须小心处理。 这样printf()一个字符串是否正确?#include<string_view> #include<cstdio> int main() { std...

13得票2回答
boost::string_ref和boost::string_view的区别

Boost提供了两种不同的string_view实现,它们将成为C++17的一部分: boost::string_ref在utility/string_ref.hpp中 boost::string_view在core/string_view.hpp中 这两者之间是否有显著差异?未来应该...

13得票1回答
在std::unordered_set中使用std::string_view和std::string

假设你有一个 std::unordered_set<std::string>。 你有一个 std::string_view 对象想要在容器中搜索。问题是,你不想从你的 std::string_view 创建一个 std::string,因为这会有点违背使用 std::string...

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

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

12得票1回答
警告:指针所指向的对象将在完整表达式结束时被销毁,这是针对 std::pair 的。

以下代码会导致悬空指针错误。 std::vector<std::pair<std::string, int>> c; for (auto& b : c) { const auto& [s, i] = b; s...

11得票2回答
实现字符串视图格式化流输出

在实现C++1z的std::basic_string_view以便在旧编译器上使用时,我遇到了一个问题,即它的流输出运算符重载link1。基本上,它必须输出由string_view引用的内容,同时不依赖于任何空终止符(因为string_view不能保证是空终止的)。 通常,编写operato...

11得票3回答
在C++中,如果我必须将两个const char *变量连接起来,该如何避免使用#define宏?

我想在我的代码中消除对 #define 宏的依赖,但是我无法通过 constexpr 实现相同的功能。 为了实际应用,考虑以下示例: #define PRODUCT_NAME "CloysterHPC" constexpr const char* productName = PRODUCT...

11得票1回答
如何通过值或常量引用传递std::string_view

通常情况下,像这样的函数参数会使用 string_view : void fval(std::string_view sv); void fcref(std::string_view const &sv); 哪个更好? const 引用是 8 字节,而 string_view ...

10得票4回答
连接string_view对象

我一直在将std::string_view添加到一些旧代码中,用于表示字符串配置参数,因为它提供了一个只读视图,由于不需要复制,所以速度更快。 然而,两个string_view不能连接在一起,因为未定义operator+。我看到这个问题有几个答案表明这是一个疏忽,有一个提案正在添加该功能。但...