除了 std::string_view 方法之外,std::string_view 是否比 char* 有任何优势?
如果没有使用 string_view
的方法,是否有任何理由将 char*
重构为 string_view
?
最佳答案
char*
只是一个指向字符的指针。要将其解释为字符串,您需要一个长度,可以是显式的(pascal 字符串将其存储在第一个字符之前,或者您可以将长度信息作为另一个参数或结构成员传递给它),或者是隐式的(空终止)。
字符串 View 是上述第二个 View 的抽象。与第一个或第三个不同,它不需要字符串缓冲区的连续数据来包含长度信息。这意味着您可以在 O(1) 时间内创建非拥有子字符串而无需复制,这是其他两种方法无法做到的。
确定上述第一种和第二种情况的字符串长度是 O(1) 和 O(n) 以空终止。这很重要。
字符串 View 与一对 char*
或与长度配对的 char*
相比没有根本优势;与那些相比,你所获得的只是实用方法。但它与空终止字符缓冲区有根本不同。
关于c++ - 除了 std::string_view 方法之外, std::string_view 比 char* 有什么优势吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50457461/