37得票3回答
如何正确地从std::string_view创建std::string?

我有一个类:class Symbol_t { public: Symbol_t( const char* rawName ) { memcpy( m_V, rawName, 6 * sizeof( char ) ); }; string_view strVw()...

241得票2回答
什么是string_view?

string_view是C++17中添加的一个特性,最初在C++ Library Fundamentals TS(N3921)中提出。 据我理解,string_view是一种表示某种字符串“概念”的类型,它可以视为能够存储可视为字符串的任何类型容器的视图。 这个理解正确吗? 是否应该将经...

7得票2回答
将字符串隐式转换为string_view

void Foo1(string_view view) { ... } string str = "one two three"; Foo1("one two three"); // Implicitly convert char* to string_view Foo1(str); ...

131得票3回答
为什么没有从std::string_view到std::string的隐式转换?

有一个从`std::string`到`std::string_view`的隐式转换,尽管这可能会导致很多悬空引用,但它并不被认为是不安全的,只要程序员小心一点就好。 另一方面,没有从`std::string_view`到`std::string`的隐式转换,即使使用相同的参数,也完全相反:因...

75得票4回答
如何将std::string_view转换为const char*?

使用带有标志-std=c++17的gcc-7.1进行编译时,以下程序会引发错误: #include <string_view> void foo(const char* cstr) {} void bar(std::string_view str){ foo(str); ...

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...

10得票4回答
连接string_view对象

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

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

我一直在尝试使用std::string_view库,并考虑将我正在开发的代码库尽可能地改用std::string_view。然而,在我阅读的许多关于何时以及在哪里使用std::string_view而不是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;。 所以我想知道这两者之间的区别,是否有一种比另一种更优?一个明显的...

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

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