php 企业网站开发实例/友情链接如何添加

php 企业网站开发实例,友情链接如何添加,怎么在日本做乐天网站供货商,网站建设的广告语文章目录 一、背景与动机二、string::starts_with 和 string::ends_with(一)语法与功能(二)使用示例1\. 判断字符串开头2\. 判断字符串结尾 (三)优势 三、string_view::starts_with 和 string_view::ends_w…

文章目录

    • 一、背景与动机
    • 二、string::starts_with 和 string::ends_with
      • (一)语法与功能
      • (二)使用示例
        • 1\. 判断字符串开头
        • 2\. 判断字符串结尾
      • (三)优势
    • 三、string_view::starts_with 和 string_view::ends_with
      • (一)语法与功能
      • (二)使用示例
        • 1\. 判断字符串开头
        • 2\. 判断字符串结尾
      • (三)优势
    • 四、实践案例
      • (一)文件名处理
      • (二)HTTP 请求解析
    • 五、注意事项
    • 六、总结

在现代编程中,字符串操作是程序开发中不可或缺的一部分。C++20 标准的引入为字符串处理带来了诸多便捷功能,其中 std::stringstd::string_viewstarts_withends_with 方法尤为引人注目。这些方法不仅简化了代码,还提高了可读性和效率。本文将通过实际示例,深入探讨这些方法的使用场景和优势。

一、背景与动机

在 C++20 之前,判断一个字符串是否以某个特定的子串开头或结尾通常需要编写复杂的逻辑代码。例如,我们可能需要使用 std::string::substrstd::string::find 方法来实现类似功能,但这些方法不仅代码冗长,而且容易出错。C++20 的 starts_withends_with 方法正是为了解决这些问题而设计的。

二、string::starts_with 和 string::ends_with

(一)语法与功能

std::string::starts_withstd::string::ends_with 是 C++20 新增的成员函数,它们分别用于判断字符串是否以指定的字符或子串开头或结尾。其语法如下:

bool starts_with(char c) const noexcept;
bool starts_with(const char* s) const noexcept;
bool starts_with(const std::string& str) const noexcept;bool ends_with(char c) const noexcept;
bool ends_with(const char* s) const noexcept;
bool ends_with(const std::string& str) const noexcept;

这些方法支持多种参数类型,包括单个字符、C 风格字符串和 std::string 对象,为开发者提供了极大的灵活性。

(二)使用示例

1. 判断字符串开头
#include <iostream>
#include <string>int main() {std::string str = "Hello, World!";if (str.starts_with("Hello")) {std::cout << "The string starts with 'Hello'" << std::endl;}if (str.starts_with('H')) {std::cout << "The string starts with 'H'" << std::endl;}return 0;
}

输出结果为:

The string starts with 'Hello'
The string starts with 'H'
2. 判断字符串结尾
#include <iostream>
#include <string>int main() {std::string str = "Hello, World!";if (str.ends_with("!")) {std::cout << "The string ends with '!'" << std::endl;}if (str.ends_with("World!")) {std::cout << "The string ends with 'World!'" << std::endl;}return 0;
}

输出结果为:

The string ends with '!'
The string ends with 'World!'

(三)优势

  1. 简洁性:相比传统的字符串操作方法,starts_withends_with 提供了更简洁的语法,减少了代码量。
  2. 可读性:方法名称直观地表达了其功能,使得代码更易于理解和维护。
  3. 效率:这些方法经过优化,能够高效地处理字符串匹配操作。

三、string_view::starts_with 和 string_view::ends_with

(一)语法与功能

std::string_view 是 C++17 引入的轻量级字符串类,它提供了一种高效的方式处理字符串数据。C++20 为 std::string_view 添加了与 std::string 相同的 starts_withends_with 方法,其语法如下:

bool starts_with(char c) const noexcept;
bool starts_with(const char* s) const noexcept;
bool starts_with(const std::string_view& sv) const noexcept;bool ends_with(char c) const noexcept;
bool ends_with(const char* s) const noexcept;
bool ends_with(const std::string_view& sv) const noexcept;

这些方法与 std::string 的版本类似,但它们专门针对 std::string_view 设计,进一步提升了性能。

(二)使用示例

1. 判断字符串开头
#include <iostream>
#include <string_view>int main() {std::string_view sv = "Hello, World!";if (sv.starts_with("Hello")) {std::cout << "The string view starts with 'Hello'" << std::endl;}if (sv.starts_with('H')) {std::cout << "The string view starts with 'H'" << std::endl;}return 0;
}

输出结果为:

The string view starts with 'Hello'
The string view starts with 'H'
2. 判断字符串结尾
#include <iostream>
#include <string_view>int main() {std::string_view sv = "Hello, World!";if (sv.ends_with("!")) {std::cout << "The string view ends with '!'" << std::endl;}if (sv.ends_with("World!")) {std::cout << "The string view ends with 'World!'" << std::endl;}return 0;
}

输出结果为:

The string view ends with '!'
The string view ends with 'World!'

(三)优势

  1. 性能优势std::string_view 不会复制字符串数据,而是直接引用原始字符串。因此,在使用 starts_withends_with 方法时,不会产生额外的内存分配和复制开销。
  2. 灵活性std::string_view 可以与 std::string 无缝配合,使得代码更加灵活。

四、实践案例

(一)文件名处理

假设我们正在开发一个文件处理程序,需要判断文件名是否以特定的扩展名结尾。使用 ends_with 方法可以轻松实现这一功能:

#include <iostream>
#include <string>bool isImageFile(const std::string& filename) {return filename.ends_with(".jpg") || filename.ends_with(".png") || filename.ends_with(".gif");
}int main() {std::string filename = "example.jpg";if (isImageFile(filename)) {std::cout << filename << " is an image file." << std::endl;} else {std::cout << filename << " is not an image file." << std::endl;}return 0;
}

输出结果为:

example.jpg is an image file.

(二)HTTP 请求解析

在解析 HTTP 请求时,我们可能需要判断请求路径是否以特定的前缀开头。使用 starts_with 方法可以方便地实现这一功能:

#include <iostream>
#include <string>bool isApiRequest(const std::string& path) {return path.starts_with("/api/");
}int main() {std::string path = "/api/users";if (isApiRequest(path)) {std::cout << path << " is an API request." << std::endl;} else {std::cout << path << " is not an API request." << std::endl;}return 0;
}

输出结果为:

/api/users is an API request.

五、注意事项

  1. 空字符串处理:如果目标字符串为空,starts_withends_with 方法会返回 false
  2. 参数类型匹配:在使用 starts_withends_with 方法时,需要注意参数类型与目标字符串类型的一致性。例如,不要将 std::string 对象传递给 std::string_view 的方法。
  3. 性能优化:虽然 std::string_view 提供了更高的性能,但在某些场景下,可能需要将 std::string_view 转换为 std::string。此时需要注意内存分配和复制的开销。

六、总结

C++20 的 std::string::starts_withstd::string::ends_withstd::string_view::starts_withstd::string_view::ends_with 方法为字符串处理带来了极大的便利。它们不仅简化了代码,提高了可读性,还提升了性能。在实际开发中,合理使用这些方法可以显著提高开发效率和代码质量。希望本文的介绍和实践案例能够帮助你更好地理解和应用这些功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/73130.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能飞鸟监测 守护高压线安全

飞鸟检测新纪元&#xff1a;视觉分析技术的革新应用 在现代化社会中&#xff0c;飞鸟检测成为了多个领域不可忽视的重要环节。无论是高压线下的安全监测、工厂内的生产秩序维护&#xff0c;还是农业区的作物保护&#xff0c;飞鸟检测都扮演着至关重要的角色。传统的人工检测方…

ADC噪声全面分析 -04- 有效噪声带宽简介

为什么要了解ENBW&#xff1f; 了解模数转换器 (ADC) 噪声可能具有挑战性&#xff0c;即使对于最有经验的模拟设计人员也是如此。 Delta-sigma ADC 具有量化和热噪声的组合&#xff0c;这取决于 ADC 的分辨率、参考电压和输出数据速率 (ODR)。 在系统级别&#xff0c;额外的信…

STM32单片机uCOS-Ⅲ系统10 内存管理

目录 一、内存管理的基本概念 二、内存管理的运作机制 三、内存管理的应用场景 四、内存管理函数接口讲解 1、内存池创建函数 OSMemCreate() 2、内存申请函数 OSMemGet() 3、内存释放函数 OSMemPut() 五、实现 一、内存管理的基本概念 在计算系统中&#xff0c;变量、中…

蓝桥杯2023年第十四届省赛真题-异或和之差

题目来自DOTCPP&#xff1a; 思路&#xff1a; 什么是异或和&#xff1f; ①题目要求我们选择两个不相交的子段&#xff0c;我们可以枚举一个分界线i&#xff0c;子段1在 i 的左边&#xff0c; 子段2在 i 的右边&#xff0c;分别找到子段1和子段2的最大值、最小值。 ②怎么确…

Linux作业2——有关文件系统权限的练习

1、创建/www目录&#xff0c;在/www目录下新建name和https目录&#xff0c;在name和https目录下分别创建一个index.html文件&#xff0c;name下面的index.html文件中包含当前主机的主机名&#xff0c;https目录下的index.html文件中包含当前主机的ip地址。 #创建/www目录&…

leeCode 70. 爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. 2 阶 示例 2&#x…

算法题(105):小猫爬山

审题&#xff1a; 本题需要我们找出将n个小猫放在有限重的缆车上运下山所需的最小缆车数 时间复杂度分析&#xff1a;本题的数据量小于等于18&#xff0c;所以我们在做好剪枝的前提下可以使用深度优先搜索解题 思路&#xff1a; 方法一&#xff1a;dfs 搜索策略&#xff1a;将小…

多协议兼容+高并发处理:EasyCVR如何破解AI安防规模化落地难题?

随着AI技术在安防领域的深入应用&#xff0c;规模化部署面临两大核心挑战&#xff1a;设备协议碎片化导致的接入壁垒与海量视频流并发带来的性能瓶颈。TSINGSEE青犀视频的EasyCVR平台通过“多协议兼容高并发处理”双引擎驱动&#xff0c;结合云边端协同架构与智能算法优化&…

IntelliJ IDEA 中 Git 高频问题与操作详解|新手避坑指南

标签&#xff1a;IntelliJ IDEA Git操作, Git教程, 版本控制, 冲突解决, 分支管理 引言 你是否遇到过这些问题&#xff1f; 代码提交后想撤销怎么办&#xff1f;合并分支时冲突不会解决&#xff1f;不小心把错误代码推送到远程仓库&#xff1f; 本文针对 IntelliJ IDEA 中 Git …

N列股票收盘价为起点的马科维茨(Markowitz)均值—方差理论

1. 数据准备与收益率计算 输入数据&#xff1a; 假设你有一个矩阵&#xff0c;每一列代表一只股票的历史收盘价序列。每一行对应一个时间点的收盘价。 计算收益率&#xff1a; 马科维茨理论要求使用资产的收益率而非价格。常用的收益率计算方法有对数收益率或简单收益率。 2.…

python基于spark的心脏病患分类及可视化(源码+lw+部署文档+讲解),源码可白嫖!

摘要 时代在飞速进步&#xff0c;每个行业都在努力发展现在先进技术&#xff0c;通过这些先进的技术来提高自己的水平和优势&#xff0c;汽车数据分析平台当然不能排除在外。本次我所开发的心脏病患分类及可视化系统是在实际应用和软件工程的开发原理之上&#xff0c;运用Pyth…

3.milvus索引-HNSW

索引作用 加速大型数据集上的查询。 向量字段&#xff0c;仅只能创建一个索引。 milvus支持的向量索引类型大部分使用 近似最近邻搜索算法。ANNS该算法的核心不局限于返回最准确的结果&#xff0c;而是仅搜索目标的邻居。ANNS通过在可接受的范围内牺牲准确性提高检索效率。 …

Python(学习二)

列表&#xff1a;[] 列表是可以容纳不同类型的数据的 列表取&#xff1a; 列表切片&#xff1a;一次去获取多个元素 第三个参数&#xff0c;设置跨度值&#xff1a; 列表倒序输出 列表增&#xff1a; 列表后面添加元素&#xff1a; 切片&#xff1a;实现添加元素 任意位置…

【中文翻译】第1章-The Algorithmic Foundations of Differential Privacy

为方便阅读&#xff0c;故将《The Algorithmic Foundations of Differential Privacy》翻译项目内容搬运至此&#xff1b; 教材原文地址&#xff1a;https://www.cis.upenn.edu/~aaroth/Papers/privacybook.pdf 中文翻译版 Github 项目地址1&#xff1a;https://github.com/gu…

Web开发-JS应用NodeJS原型链污染文件系统Express模块数据库通讯

知识点&#xff1a; 1、安全开发-NodeJS-开发环境&功能实现 2、安全开发-NodeJS-安全漏洞&案例分析 3、安全开发-NodeJS-特有漏洞 node.js就是专门运行javascript的一个应用程序&#xff0c;区别于以往用浏览器解析原生js代码&#xff0c;node.js本身就可以解析执行js代…

Flutter使用自签证书打包ipa

在 Flutter 中使用自签证书打包 IPA 文件&#xff0c;可以通过以下步骤完成&#xff1a; 1. 准备自签证书 方式一 生成自签证书&#xff1a; 打开 钥匙串访问 应用。选择 证书助理 > 创建证书。按照提示填写证书信息&#xff0c;选择证书类型为 代码签名&#xff0c;并保存…

面试常问系列(一)-神经网络参数初始化

一、背景 说到参数初始化&#xff0c;先提一下大家常见的两个概念梯度消失和梯度爆炸。 &#xff08;一&#xff09;、梯度消失&#xff1a;深层网络的“静默杀手” 定义&#xff1a; 在反向传播过程中&#xff0c;梯度值随着网络层数增加呈指数级衰减&#xff0c;最终趋近…

(学习总结29)Linux 进程概念和进程状态

Linux 进程概念 冯诺依曼体系结构软件运行与存储分级数据流动的理论过程 操作系统操作系统(Operator System) 概念操作系统的功能与作用系统调用和库函数概念 进程概念描述进程 - PCBtask_struct查看进程通过系统调用获取进程标示符 PID通过系统调用 fork 函数创建进程简单使用…

Wi-Fi NAN 架构(Wi-Fi Aware Specification v4.0,第2章:2.3~2.6)

1. NAN 数据通信架构 1.1 单播支持 要在两个NAN设备之间启动单播数据通信&#xff0c;服务需发起一个NAN数据路径&#xff08;NDP&#xff0c;NAN Data Path&#xff09;请求。这对NAN设备之间会建立一个NAN设备链路&#xff08;NDL&#xff0c;NAN Device Link&#xff09;&…

Lineageos 22.1(Android 15)实现负一屏

一、前言 方案是参考的这位大佬的&#xff0c;大家可以去付费订阅支持一波。我大概理一下Android15的修改。 大佬的方案代码 二、Android15适配调整 1.bp调整&#xff0c;加入aidl引入&#xff0c;这样make之后就可以索引代码了 filegroup {name: "launcher-src"…