std::string_view是C++17引入的轻量级只读字符串视图,仅存储指针和长度,不拥有数据、零拷贝、支持多种来源隐式构造,适用于函数参数、切片、解析等只读场景,但需确保所指数据生命周期足够长。

std::string_view 是 C++17 引入的一个轻量级、只读的字符串“视图”,它不拥有字符串数据,只是对已有字符序列(比如 const char*、std::string 或字符数组)的引用和长度封装。
传统上,函数接收字符串常习惯用 const std::string&,但这样会隐式接受一个临时 std::string,触发堆内存分配和拷贝。例如:
而用 std::string_view:
关键点:
立即学习“C++免费学习笔记(深入)”;
适合所有“只读访问字符串内容、且生命周期可控”的场合:
const std::string& 和 const char*,统一接口又免拷贝substr() 快速获取子串视图,不分配新内存示例:
std::string data = "name=alice&age=30";它高效,但不“安全”——使用者必须确保它所指向的原始数据在 view 生命周期内有效:
三者定位不同:
const char*:C 风格,无长度信息,需 strlen,易越界const std::string&:安全但重(可能触发拷贝),接口不灵活std::string_view:轻量、安全(带长度)、通用(支持多种来源)、零成本抽象一句话总结:当你只需要“看看字符串”,别让它搬家(拷贝),就用 string_view。
基本上就这些。
以上就是C++中的std::string_view是什么?C++字符串性能优化利器【C++17】的详细内容,更多请关注php中文网其它相关文章!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号