c++ string_view

c++ 17的std::string_view是轻量级字符串视图类。测试下:

cpp 复制代码
// 接收 string_view,零拷贝,支持传入多种字符串类型
static void process_text(std::string_view text) {
    std::cout << "字符串内容: " << text << ", 字符串长度: " << text.size() << std::endl;
}

void testString_view(void) { // 测试c++ 17的std::string_view
    std::string str = "Hello, vicky du";
    const char* cstr = "only you...";
    process_text(str);      // 传入 std::string
    process_text(cstr);     // 传入 C 风格字符串
    process_text("张良,萧何,陈平,周勃,韩信,樊哙,英布,彭越,卢绾");// 传入字面量

    std::string_view persons = "张良,萧何,陈平,周勃,韩信,樊哙,英布,彭越,卢绾";
    auto char_count = std::ranges::count_if(persons, [](char c) {
        return (c & 0xC0) != 0x80;
    }); 
    std::cout << "UTF‑8字符数量(汉字+标点): "<< char_count << std::endl;

    // 零拷贝截取子串
    std::string_view sv = "love u";
    std::string_view sub = sv.substr(2, 2); // 仅调整指针和长度
    std::cout << "子串: " << sub << std::endl;
}

运行:

ok.

相关推荐
starzy19901 小时前
深入理解Scala可变Map:动态构建场景下的性能与设计权衡
开发语言·scala
zhanghaha13143 小时前
C# 系列教程_7 判断语句(分支)保姆级精讲
开发语言·c#
apcipot_rain3 小时前
C++转Java日记(02)
java·开发语言·c++
杜 硕3 小时前
从零开始的C++生活——第七讲——02
开发语言·c++·生活
zhanghaha13143 小时前
C# 系列教程_8 循环语句 保姆级精讲(面向新手)
开发语言·c#
Rabitebla11 小时前
【Linux 底层原理】进程(十):进程等待详解---从僵尸进程到 wait、waitpid 与 status
linux·c++·笔记·学习·visual studio
麦麦麦当劳大王11 小时前
【油猴脚本】Boss直聘 岗位职责复制
开发语言·前端·javascript
starzy199012 小时前
深入理解Scala Map:从实现原理到工程实践
开发语言·后端·scala
只睡四小时13 小时前
Three.js Sub-tick:漏判 60.7%→0
开发语言·javascript·性能优化·ecmascript·游戏开发·three.js·碰撞检测
码农小河6613 小时前
基于SSM+JSP的高校专业信息管理系统【附源码+数据库】
java·开发语言·数据库