C++中的std::string_view是什么?C++字符串性能优化利器【C++17】

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

C++中的std::string_view是什么?C++字符串性能优化利器【C++17】-第1张图片-佛山资讯网

std::string_view 是 C++17 引入的一个轻量级、只读的字符串“视图”,它不拥有字符串数据,只是对已有字符序列(比如 const char*、std::string 或字符数组)的引用和长度封装。

为什么需要 string_view?——避免不必要的拷贝

传统上,函数接收字符串常习惯用 const std::string&,但这样会隐式接受一个临时 std::string,触发堆内存分配和拷贝。例如:

void log(const std::string& s) { /* ... */ }
log("hello"); // 构造临时 string → 拷贝 "hello" 到堆

而用 std::string_view

void log(std::string_view s) { /* ... */ }
log("hello"); // 直接指向字面量,零拷贝

关键点:

立即学习“C++免费学习笔记(深入)”;

  • 不管理内存,仅存指针 + 长度(通常仅 16 字节)
  • 支持从 C 风格字符串、std::string、字符数组等隐式构造
  • 不可修改内容(只读),线程安全读取

string_view 的典型使用场景

适合所有“只读访问字符串内容、且生命周期可控”的场合:

标签: 字节 c++ 为什么

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~