当前位置: 首页 > news >正文

c/c++字符串处理标准库 string 介绍

c语言中string.h介绍

C语言的标准库中包含了一个头文件 <string.h>,该头文件提供了一系列字符串处理函数的声明和定义。以下是一些常用的函数:

  • 字符串复制strcpy(dest, src)。将源字符串 src 复制到目标字符串 dest,包括字符串结束符 \0
#include <stdio.h>
#include <string.h>int main() {char source[] = "Hello, world!";char destination[20];strcpy(destination, source);printf("Source: %s\n", source);printf("Destination: %s\n", destination);return 0;
}

输出结果:

Source: Hello, world!
Destination: Hello, world!

  • 字符串连接strcat(dest, src)。将源字符串 src 连接到目标字符串 dest 的末尾,结果保存在 dest 中,同时返回 dest
#include <stdio.h>
#include <string.h>int main() {char destination[20] = "Hello";char source[] = ", world!";strcat(destination, source);printf("String after concatenation: %s\n", destination);return 0;
}

输出结果:

String after concatenation: Hello, world!

  • 字符串比较strcmp(str1, str2)。比较字符串 str1str2,返回一个整数值表示比较结果。如果返回值为负数,则 str1 小于 str2;如果返回值为正数,则 str1 大于 str2;如果返回值为 0,则 str1 等于 str2
#include <stdio.h>
#include <string.h>int main() {char str1[] = "apple";char str2[] = "banana";int result = strcmp(str1, str2);if (result < 0) {printf("%s is less than %s\n", str1, str2);} else if (result > 0) {printf("%s is greater than %s\n", str1, str2);} else {printf("%s is equal to %s\n", str1, str2);}return 0;
}

输出结果:

apple is less than banana

  • 字符串长度strlen(str)。返回字符串 str 的长度,不包括字符串结束符 \0
#include <stdio.h>
#include <string.h>int main() {char str[] = "Hello, world!";int length = strlen(str);printf("Length of the string: %d\n", length);return 0;
}

输出结果:

Length of the string: 13

  • 字符串查找strchr(str, ch)。在字符串 str 中查找字符 ch 的第一次出现,并返回该字符的指针。如果未找到字符,则返回 NULL
#include <stdio.h>
#include <string.h>int main() {char str[] = "Hello, world!";char ch = 'o';char* result = strchr(str, ch);if (result != NULL) {printf("Character '%c' found at position: %ld\n", ch, result - str);} else {printf("Character '%c' not found\n", ch);}return 0;
}

输出结果:

Character ‘o’ found at position: 4

  • 字符串分割strtok(str, delimiters)。将字符串 str 按照分隔符 delimiters 进行分割,并返回分割后的子字符串。
#include <stdio.h>
#include <string.h>int main() {char str[] = "Hello,world,how,are,you";const char delimiters[] = ",";char* token = strtok(str, delimiters);while (token != NULL) {printf("%s\n", token);token = strtok(NULL, delimiters);}return 0;
}

输出结果:

Hello
world
how
are
you

c++语言中string介绍

C++ 中有一个名为 std::string 的标准库类,它提供了处理字符串的功能。要使用 std::string 类,需要包含头文件 <string>

  • 创建字符串对象:可以使用以下方式创建 std::string 对象。
std::string str1;                     // 创建一个空字符串
std::string str2 = "Hello, world!";   // 创建并初始化一个字符串
std::string str3("Welcome");          // 使用字符串字面值创建字符串
  • 字符串拼接:可以使用 + 运算符或者 append() 函数进行字符串拼接。
std::string result = str1 + str2;
#include <iostream>
#include <string>int main() {std::string str1 = "Hello";std::string str2 = " world!";std::string result = str1 + str2;std::cout << "Concatenated string: " << result << std::endl;return 0;
}

结果输出:

Concatenated string: Hello world!

#include <iostream>
#include <string>int main() {std::string str1 = "Hello";std::string str2 = " world!";str1.append(str2);std::cout << "Concatenated string: " << str1 << std::endl;return 0;
}

结果输出:

Concatenated string: Hello world!

  • 字符串长度:可以使用length()size() 成员函数获取字符串的长度。
int length = str.length();
#include <iostream>
#include <string>int main() {std::string str = "Hello, world!";int length = str.length();std::cout << "Length of the string: " << length << std::endl;return 0;
}

输出结果:

Length of the string: 13

#include <iostream>
#include <string>int main() {std::string str = "Hello, world!";int length = str.size();std::cout << "Length of the string: " << length << std::endl;return 0;
}

输出结果:

Length of the string: 13

  • 访问单个字符:可以使用 [] 运算符at() 成员函数来访问字符串中的单个字符。
char ch = str[0];      // 访问第一个字符
char ch2 = str.at(2);  // 访问第三个字符
#include <iostream>
#include <string>int main() {std::string str = "Hello, world!";char firstChar = str[0];char lastChar = str[str.length() - 1];std::cout << "First character: " << firstChar << std::endl;std::cout << "Last character: " << lastChar << std::endl;return 0;
}

输出结果:

First character: H
Last character: !

  • 字符串比较:可以使用 ==、!=、<、>、<=、>= 运算符或者 compare() 函数对字符串进行比较。
if (str1 == str2) {// 字符串相等
}
#include <iostream>
#include <string>int main() {std::string str1 = "Hello";std::string str2 = "World";int result = str1.compare(str2);if (result == 0) {std::cout << "Strings are equal." << std::endl;} else if (result < 0) {std::cout << "str1 is less than str2." << std::endl;} else {std::cout << "str1 is greater than str2." << std::endl;}return 0;
}

输出结果:

str1 is less than str2.

  • 查找子字符串:可以使用 find() 成员函数或者 find_first_of() 函数在字符串中查找子字符串的位置。
size_t pos = str.find("world");   // 查找 "world" 的位置
#include <iostream>
#include <string>int main() {std::string str = "Hello, world!";std::string subStr = "world";size_t position = str.find(subStr);if (position != std::string::npos) {std::cout << "Substring found at position: " << position << std::endl;} else {std::cout << "Substring not found." << std::endl;}return 0;
}

输出结果:

Substring found at position: 7
在上述示例中,我们声明了一个 std::string 类型的字符串变量 str,赋值为 “Hello, world!”。然后,声明了一个 std::string 类型的子字符串变量 subStr,赋值为 “world”。接下来,使用 find() 函数在字符串 str 中查找子字符串 subStr 的位置。如果找到了子字符串,find() 函数返回子字符串的起始位置;如果未找到子字符串,find() 函数返回 std::string::npos。在示例中,我们判断返回值是否等于 std::string::npos,如果不等于,则输出子字符串的位置。

#include <iostream>
#include <string>int main() {std::string str = "Hello, world!";std::string subStr = "ow";size_t position = str.find_first_of(subStr);if (position != std::string::npos) {std::cout << "Substring found at position: " << position << std::endl;} else {std::cout << "Substring not found." << std::endl;}return 0;
}

输出结果:

Substring found at position: 4
在上述示例中,我们使用 find_first_of() 函数在字符串 str 中查找子字符串 subStr 中的任意一个字符的位置。与 find() 函数不同,find_first_of() 函数返回的是子字符串中任意一个字符在原字符串中的第一个匹配位置。在示例中,我们判断返回值是否等于 std::string::npos,如果不等于,则输出子字符串中任意一个字符的位置。

  • 子字符串提取:可以使用 substr() 成员函数提取字符串的子串。
std::string sub = str.substr(7, 5);   // 提取从位置 7 开始的 5 个字符
  • 字符串插入、删除和替换:可以使用 insert()erase()replace() 成员函数对字符串进行插入、删除和替换操作。

相关文章:

c/c++字符串处理标准库 string 介绍

c语言中string.h介绍 C语言的标准库中包含了一个头文件 <string.h>&#xff0c;该头文件提供了一系列字符串处理函数的声明和定义。以下是一些常用的函数&#xff1a; 字符串复制&#xff1a;strcpy(dest, src)。将源字符串 src 复制到目标字符串 dest&#xff0c;包括…...

HarmonyOS NEXT应用开发之深色模式适配

介绍 本示例介绍在开发应用以适应深色模式时&#xff0c;对于深色和浅色模式的适配方案&#xff0c;采取了多种策略如下&#xff1a; 固定属性适配&#xff1a;对于部分组件的颜色属性&#xff0c;如背景色或字体颜色&#xff0c;若保持不变&#xff0c;可直接设定固定色值或…...

Go微服务: 基于Go Micro框架实现微服务调用

Go Micro 1 &#xff09;概述 在具体的项目开发过程中&#xff0c;开发者聚焦的是业务逻辑的开发和功能的实现大量的环境配置&#xff0c;调试搭建等基础性工作会耗费相当一部分的精力因此有必要将微服务架构中所涉及到的&#xff0c;相关的解决方案做集中管理和维护Go Micro …...

大模型prompt提示词如何调优?

当使用大型模型&#xff08;如GPT-3.5&#xff09;时&#xff0c;可以通过优化提示&#xff08;prompt&#xff09;来引导模型生成更加符合预期的内容。以下是一些调优提示词的建议&#xff1a; 1、清晰的问题陈述&#xff1a;确保你的问题或提示清晰、简明&#xff0c;能够准…...

【Python/crawl】如何使用Python爬虫将一系列网页上的同类图片下载到本地

【需求】 从网页https://www.zhainq.com/%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f%e6%9c%ba%e6%9e%84/%e6%97%a5%e6%9c%ac%e7%be%8e%e5%a5%b3%e5%86%99%e7%9c%9f/109012.html 开始&#xff0c;有十七页&#xff0c;每页都有大漂亮“小濑田麻由”的若干图片&#xff0c;想要将其…...

Postgresql 连接数查看,死锁问题解决

-- 查看所有连接 select * -- datname,pid,application_name,state from pg_stat_activity; -- 查询最大连接数 select max_conn-now_conn as resi_conn from (select setting::int8 as max_conn,(select count(*) from pg_stat_activity) as now_conn from pg_settings where…...

ssm蛋糕甜品商城系统(程序+文档+数据库)

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 一、研究背景…...

算法空间复杂度计算

目录 空间复杂度定义 影响空间复杂度的因素 算法在运行过程中临时占用的存储空间讲解 例子 斐波那契数列递归算法的性能分析 二分法&#xff08;递归实现&#xff09;的性能分析 空间复杂度定义 空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大…...

C++ lambda函数个人理解

及方便自己在函数内部定义函数 int main() {int i 1;auto c [](int a, int c) {return ab;};int d a(2, i);cout<<c;return 0; }格式&#xff1a; auto functionname [capture](parameters) -> return_type { /* … */ }; &#xff08;1&#xff09;[capture] &a…...

SwiftUI的context Menu

SwiftUI的 context Menu 现在来演示一下如何使用 SwiftUI 的 Context Menu 。 代码&#xff1a; import SwiftUIstruct ContextMenuBootCamp: View {State var bgColor: Color .purplevar body: some View {VStack(alignment: .leading, spacing: 10.0) {Image(systemName: …...

【数据结构】树与堆 (向上/下调整算法和复杂度的分析、堆排序以及topk问题)

文章目录 1.树的概念1.1树的相关概念1.2树的表示 2.二叉树2.1概念2.2特殊二叉树2.3二叉树的存储 3.堆3.1堆的插入&#xff08;向上调整&#xff09;3.2堆的删除&#xff08;向下调整&#xff09;3.3堆的创建3.3.1使用向上调整3.3.2使用向下调整3.3.3两种建堆方式的比较 3.4堆排…...

安装CDH平台的服务器磁盘满了,磁盘清理过程记录

1.使用hdfs命令查看哪个文件占用最大 hdfs dfs -du -h /tmp 2.我的服务器上显示/tmp/hive/hive文件夹下的&#xff0c;一串字符串命名的文件特别大几乎把磁盘占满了 网上查到/tmp文件是临时文件&#xff0c;由于hiveserver2任务运行异常导致缓存未删除&#xff0c;正常情况下…...

《互联网的世界》第七讲-能源

本想聊聊 tcp 和 quic&#xff0c;但这些都属于术的范畴&#xff0c;变化多端&#xff0c;等孩子们长大了又不知变成什么样子了&#xff0c;趁这段时间在家&#xff0c;还是得讲一些相对不变的东西&#xff0c;或法或势。 从 安阳卖血糕的精巧篦子 想到如何做圆米粉和圆面条&a…...

前端代码整洁与规范之CSS篇

一、代码整洁 1. 命名规范 CSS 类名的命名应该简洁清晰&#xff0c;能够准确描述元素的作用。避免使用无意义的名称&#xff0c;例如“a”、“b”等&#xff0c;而应该使用有意义的英文单词或单词缩写。同时&#xff0c;也要避免使用驼峰命名法和下划线命名法混杂使用&#x…...

在【IntelliJ IDEA】中配置【Tomcat】【2023版】【中文】【图文详解】

作为一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;IntelliJ IDEA为Web服务器提供了卓越的支持&#xff0c;从而极大地简化了程序员在Web开发过程中的工作流程。学习Java Web开发实质上就是掌握如何创造动态Web资源&#xff0c;这些资源在完成开发后&…...

【SSM】任务列表案例 基本CRUD SSM整合

文章目录 一、案例功能预览二、接口分析三、前端工程导入四、后端程序实现和测试4.1 准备4.2 功能实现4.2.1 分页查询显示4.2.2 添加计划4.2.2 删除计划4.2.3 修改计划 4.3 前后联调 一、案例功能预览 Github 地址 &#xff1a; ssm-integration-part 二、接口分析 学习计划…...

基于微信小程序的校园跑腿小程序,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…...

网络学习:9个计算机的“网络层”知识点

目录 一、IP 地址 1.1 分类表示法&#xff1a; 1.1.1 分类表示地址的其他说明 1.2 无分类编址 CIDR 二、IP 数据报文格式 Q: IP 报文里有什么&#xff1f;可以不按顺序或者字节来讲一讲 三、 路由概念 3.1 路由表 3.2 路由网络匹配 3.3 ARP 解析 3.4 RARP 逆地址解析…...

web项目的搭建

使用Webstorm并创建Next.js文件 1、配置nodejs环境、安装webstorm【配置node.js可以使用nvm去管理nodejs的版本】 2、需要破解webstorm&#xff0c;可能会导致原本的idea失效&#xff0c;注册码过期 3、taobao的npm过期&#xff0c;导致npm is sass执行不成功&#xff0c;需…...

C++for语句

1.求平均年龄 班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位 输入 第1行有一个整数n(1 <= n <=100),表示学生的人数;其后n行每行有1个整数,表示每个学生的年龄,取值为15~25 输出 一行,包含一个浮点数,为所求的平…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...