除了std :: string_view方法之外,std :: string_view对char *有什么好处吗?
如果不使用char*
方法,是否有任何理由将string_view
重新加入string_view
?
答案 0 :(得分:7)
char*
只是一个指向角色的指针。要将它解释为字符串,您需要一个长度,显式(pascal字符串将其存储在第一个字符之前,或者您可以将它旁边的长度信息作为另一个参数或结构成员传递),或者隐式(null终止)。
字符串视图是上述第二个的抽象。与1st或3rd不同,它不需要与字符串缓冲区连续的数据来包含长度信息。这意味着您可以在O(1)时间内创建非拥有子字符串而无需复制,这是其他两种方法无法做到的。
确定上述第一和第二种情况的字符串长度是O(1)和O(n),用于空终止。这很重要。
字符串视图与一对char*
或char*
配对的长度相比没有任何根本优势;与那些相比,你获得的就是实用方法。但它与空终止的char缓冲区根本不同。