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

day6 cpp:c中处理字符串,c++string

0.c中处理字符串

c的操作:

//字符串检查函数(非修改式操作)

//返回str的长度,不包括null结束符

size_t strlen(const char *str);

//比较lhs和rhs是否相同,=返回0,>返回正数,<返回负数

int strcmp(const char *lhs,const char *rhs);

int strncmp(const char *lhs,const char *rhs,size_t count);

//在str中查找首次出现ch字符的位置,查找不到,返回空指针

char *strchr(const char *str,int ch);

//在str中查找首次出现子串substr的位置,查找不到,返回空指针

char *strstr(const char *str,const char *substr);

//字符串控制函数(修改式操作)

char *strcpy(char *dest,const char *src);

char *strncpy(char *dest,const char *src,size_t count);//是src的前count个字符

char *strcat(char *dest,const char *src);

char *strncat(char *dest,const char *src,size_t count)

在c中,程序员需要考虑字符数组大小的开辟,结尾空字符的处理,很不方便:

char str[]="hello";

char *pstr="world";

//求取字符串长度

printf("%d\n",strlen(str));


//字符串拼接,不能直接strcat(str,pstr),因为str的内存空间已经固定,没有多余空间存放pstr

char *ptmp=(char *)malloc(strlen(str)+strlen(pstr)+1);

strcpy(ptmp,str);

strcat(ptmp,pstr);

printf("%s\n",ptmp);


//查找子串

char *p1=strstr(ptmp,"world");

free(ptmp);

1.c++字符串

把string当成c++的内置数据类型,放在和int,double等内置类型同等位置上

string对象的构造

    string str1;//无参构造生成一个空字符串string str2("hello");//通过c风格字符串构造一个string对象,相当于string str2 = "hello";string str3("world", 3);//worstring str4(str3);//拷贝构造函数,相当于string str4 = str3;string str5(str2,1, 3);//ell---从下标1开始,接收3个字符string str6(10, 'a');//生成一个string对象,该对象包含10个a//迭代器方式创建string对象char arr[] = "hello";//迭代器目前可以理解为广义的指针//利用迭代器构造string对象时//需要传入首跌代器和尾迭代器//使用两个迭代器之间(左闭右开)范围的元素作为string对象的内容string str7(arr, arr + 5);//hell [0,5) 

 

//迭代器不等同于指针//begin函数返回string对象的首迭代器//把string视为是存放char型元素的容器//容器类型名称::iterator 就是这种容器的迭代器类型string::iterator it = str1.begin();//auto可以自动推导类型auto it2 = str1.end();string str2(it, it2);//hellostring str3(it, --it2);//hell

string常用操作 

http://www.xdnf.cn/news/12748.html

相关文章:

  • 第二十周:Redis(二)
  • 条件语句易错点
  • Android 集成 Firebase 指南
  • 如何写一篇基于Spring Boot + Vue + 微信小程序的软件的接口文档
  • Tavily 技术详解:为大模型提供实时搜索增强的利器
  • 行为设计模式之Iterator(迭代器)
  • Ubuntu20.04中MySQL的安装和配置
  • 【iOS】JSONModel源码学习
  • LLMs 系列科普文(8)
  • 多线程语音识别工具
  • 【工具教程】多个条形码识别用条码内容对图片重命名,批量PDF条形码识别后用条码内容批量改名,使用教程及注意事项
  • 告别 @MockBean!在 Spring Boot 3.2+ 中使用 @MockitoBean 进行单元测试
  • 智慧园区管理平台
  • 阿里云Alibaba Cloud安装Docker与Docker compose【图文教程】
  • Spring 中的三级缓存机制详解
  • MySQL索引:7大类型+4维分类
  • 《Windows 10下QT+OpenCV+Yolo11:AI视觉开发实战指南》
  • GNSS高精度定位之-----星基差分
  • 数据网格的革命:从集中式到分布式的数据管理新范式
  • C++中的数组
  • Linux Docker的简介
  • uni-app学习笔记三十三--触底加载更多和下拉刷新的实现
  • 重新定义 AI 协同:三款开源 MCP 工具开启智能体从“聊天”到“操控”
  • [论文阅读] 人工智能+软件工程(软件测试) | 当大语言模型遇上APP测试:SCENGEN如何让手机应用更靠谱
  • 【论文阅读29】区间预测CIPM(2025)
  • RabbitMQ fanout交换机
  • 国防科技大学计算机基础慕课课堂学习笔记
  • Unity中的Mathf.Clamp01
  • 6.5 自学测试 数据库基础 Day5
  • 利用frp和腾讯云服务器将内网暴露至外网(内网穿透)