c++ - 除了 std::string_view 方法之外,std::string_view 比 char* 有什么优势吗?
问题描述
除了 std::string_view 方法之外,std::string_view 比 char* 有什么优势吗?
如果不使用任何方法,是否有任何理由重新char*
考虑?string_view
string_view
解决方案
Achar*
只是一个指向字符的指针。要将其解释为字符串,您需要一个长度,可以是显式的(pascal 字符串将其存储在第一个字符之前,或者您可以在其旁边传递长度信息作为另一个参数或结构成员),或者隐式的(空终止)。
字符串视图是上述第二个的抽象。与第一个或第三个不同,它不需要与字符串缓冲区相邻的数据来包含长度信息。这意味着您可以在 O(1) 时间内创建非拥有子字符串而无需复制,这是其他两种方法无法做到的。
确定上面第一种和第二种情况的字符串长度是 O(1) 和 O(n) 用于空终止。这很重要。
char*
字符串视图与一对或一char*
对与长度相比没有根本优势;与这些相比,您获得的只是实用方法。但它与以空结尾的字符缓冲区根本不同。
推荐阅读
- javascript - React native - “this.setState 不是函数”试图为背景颜色设置动画?
- python - 如何使用列表推导计算嵌套列表的 bmi?
- reactjs - React 应用程序没有出现在实时服务器上(在本地工作) - 没有可见的错误,可疑的后端问题
- java - 我怎样才能返回一个对话框并使用意图呢?
- twilio - Twilio 在帖子正文中缺少必需的参数 To
- node.js - 如何在 TypeORM 中使用路由?
- python - Djanog 错误(DoesNotExist at /admin/ Profile 匹配查询不存在)
- reactjs - 如何在 react-native 中使用数组 map() 防止组件重复
- python - 在后台执行一条mysql语句
- angular - Order JSON file from GET function in Angular?