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