通八洲科技

C++如何使用std::string_view?(高效字符串视图)

日期:2025-12-19 00:00 / 作者:冰火之心
std::string_view 是轻量字符串视图,不复制不管理内存,仅记录起始地址和长度;适用于只读、切分、比较场景,需严格保证底层数据生命周期长于其使用期。

std::string_view 就是拿一个轻量“窗口”去看已存在的字符串数据,不复制、不管理内存,只记录起始地址和长度——这是它高效的核心。

什么时候该用 string_view?

当你只是读取、切分、比较字符串,而不需要修改或拥有它时,优先考虑 string_view。比如函数参数接收字符串字面量、std::string、C 风格字符串等,统一用 string_view 可避免不必要的拷贝。

怎么创建和使用?

直接从字符串字面量、std::string、C 字符串构造即可,注意生命周期必须长于 string_view 的使用期。

要注意的坑

string_view 不拥有数据,所以它是个“危险的引用”——你得自己保证底层字符数组一直有效。

配合现代 C++ 更好用

C++20 起,string_view 支持字面量后缀 "hello"sv(需 #include ),写起来更简洁;同时 std::formatstd::regex 等新设施也原生接受 string_view

基本上就这些——不复杂但容易忽略生命周期。用对了,能省下不少内存分配和拷贝,尤其在高频字符串处理场景里效果明显。