当前位置: 首页 > 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 输出 一行,包含一个浮点数,为所求的平…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

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

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

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...