C++ 17引入的新字符串类 string_view

C++ 17引入的新字符串类 string_view

编码文章call10242025-03-09 15:59:2041A+A-

在C++中,字符串不是作为基础的数据类型,而是作为一个类std::string,使用时需要包含头文件 #include 。在c++ 17中又引入了一个新的字符串类string_view,这是为什么呢?

先来说说string类在使用时的一些不足之处。在对string对象进行初始化或者作为函数参数传递时,字符串需要进行拷贝(pass by value)。字符串的拷贝是比较耗时的,尤其字符串包含的字符数很多的时候。

针对这个问题,C++17引入了一个改进的新字符串类 string_view,主要是解决字符串拷贝的问题,使用string_view对象时,不需要进行字符串拷贝,其他方面跟使用string对象基本没区别。看示例代码:

#include 
#include      //c++ 17引入string_view
using namespace std;

//函数原型,参数类型为string_view
void printStr(string_view str);

int main() 
{
	string_view s{ "Hello world!" };  //用字符串常量初始化字符串s,无须进行字符串拷贝
	printStr(s);   //字符串作为函数参数传递时,无须进行字符串拷贝
	return 0;
}

void printStr(string_view str)
{
	cout << str << endl;
}

在VS中编译时,需要把工程属性中的C++版本设置成C++17(project->propertities->general->C++ language standard),之前的版本不支持string_view。

Visual Studio中设置工程的C++版本

【小结】本文简要介绍了C++ 17的新特性之一:string_view字符串类。从使用看,这个字符串新类,似乎自带某种“引用(reference)”的特性,从而避免了字符串的拷贝,既节约了内存空间,又提升了程序的效率。

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4