C++的string_view相当于两根指针。有点类似go语言的slice。它指向一个字符串。string_view相比string的好处就是避免了传递字符串的拷贝,取substr的操作只要O(1)的时间复杂度。那么string_view的相等又是如何判断的呢?
#include <iostream>
using namespace std;
int main() {
string_view s{"hello"};
string_view t{"hello"};
string h = "hello";
cout << (s == t) << " ";
cout << (s == h);
return 0;
}
string_view和另一个string_view比,只要内容相等就相等,不必管他们的地址。string_view与string比较,也是一样,只要内容相等。
如何从子字符串创建string_view呢?不能——得先创建sv,再取字符串。
std::string s = "hello world!";
std::string_view v = std::string_view(s).substr(6, 5);
网友评论