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

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

241得票2回答
什么是string_view?

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

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

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

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

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

75得票1回答
使用string_view进行map查找

以下代码在最新的编译器上无法构建(g++-5.3,clang++-3.7)。#include <map> #include <functional> #include <experimental/string_view> void f() { us...

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

41得票4回答
何时应该传递 const& std::string 而不是 std::string_view?

我理解使用std::string_view的动机; 它有助于避免函数参数中的不必要分配。 例如: 以下程序将从字符串文字创建一个std::string。 这会导致不必要的动态分配,因为我们只关心观察字符。#include <iostream> void* operator ne...

37得票3回答
安全地将std::string_view转换为int(例如stoi或atoi)

是否有一种安全标准的方法将std::string_view转换为int? 自从C++11出现后,我们可以使用stoi将std::string转换为int: std::string str = "12345"; int i1 = stoi(str); // ...

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

26得票4回答
使用std :: string_view与需要空终止字符串的API

我有一个接受std::string_view参数的方法,它使用一个以空字符结尾的字符串作为参数的函数。例如:void stringFunc(std::experimental::string_view str) { some_c_library_func(/* Expects null...