除了std :: string_view方法之外,std :: string_view对char *有什么好处吗?

时间:2018-05-21 22:40:35

标签: c++ refactoring c++17 c-strings string-view

除了std :: string_view方法之外,std :: string_view对char *有什么好处吗?

如果不使用char*方法,是否有任何理由将string_view重新加入string_view

1 个答案:

答案 0 :(得分:7)

char*只是一个指向角色的指针。要将它解释为字符串,您需要一个长度,显式(pascal字符串将其存储在第一个字符之前,或者您可以将它旁边的长度信息作为另一个参数或结构成员传递),或者隐式(null终止)。

字符串视图是上述第二个的抽象。与1st或3rd不同,它不需要与字符串缓冲区连续的数据来包含长度信息。这意味着您可以在O(1)时间内创建非拥有子字符串而无需复制,这是其他两种方法无法做到的。

确定上述第一和第二种情况的字符串长度是O(1)和O(n),用于空终止。这很重要。

字符串视图与一对char*char*配对的长度相比没有任何根本优势;与那些相比,你获得的就是实用方法。但它与空终止的char缓冲区根本不同。