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

String operations 字符操作相关接口详解

目录

1.c_str

示例:

2.get_allocator

3.copy

4.substr

5.find

5.1示例1

5.2示例2

5.3示例3

摘要


1.c_str

c_str接口用于兼容c语言的习惯(字符串以/0来结尾,而c++则不需要/0),c的接口需要传字符串指针的时候,使用c_str()返回一个指向一个与对象字符串内容相同的但末尾额外添加/0以示结尾的符合c语言习惯的字符串的被const修饰的指针。

示例:

c语言中的文件操作接口,fopen

·

int main()
{string filename("10_8.cpp");FILE* fout = fopen(filename.c_str(), "r");if (fout)  {cout << "打开成功" << endl;}return 0;
}

运行结果:

2.get_allocator

在stl库中,申请内存一般不直接通过new而是向内存池申请,get_allocator()可用于查找对象申请的空间对应的内存池

string类本身是basic_string模板的实例化对象,模板中有对应的成员变量来分配内存池,有对应的缺省参数,日常使用不用我们关心。

其他容器也有类似成员变量,如list。

3.copy

这个接口需要我们传字符串,拷贝(覆盖原内容)之后默认是没有/0的,不常用常用的是下边一个接口。

4.substr

与copy不同,substr直接返回一个被创建好的string类型的值。不需要传指针参数。

5.find

find查找的要求是被查找的字符串中的元素与查找列表中的元素一 一对应,完全一致才会返回pos。

find_first_of,只要被查找的字符串中的字符在查找列表中出现,就会被返回它的pos。

find_first_not_of,只要被查找的字符串中的字符没有在查找列表中出现,就会返回它的pos。

rfind        find_last_of        find_last_not_of      逻辑相同,只是从后往前查找。

5.1示例1

int main()
{string file("Test.tar.zip");size_t pos = file.rfind('.');//找文件的后缀,有多个 . 从后往前找if (pos !=string::npos){string suffix = file.substr(pos);cout << suffix << endl;}return 0;
}

运行结果:

5.2示例2

int main()
{//拆分网址string ur1 = "https://legacy.cplusplus.com/reference/string/string/";size_t i1 = ur1.find(':');if (i1 != string::npos){string protocl = ur1.substr(0, i1);cout << protocl << endl;size_t i2 = ur1.find('/', i1 + 3);if (i2 != string::npos){string domain = ur1.substr(i1 + 3, i2 - i1 - 3);cout << domain << endl;string uri = ur1.substr(i2 + 1);cout << uri << endl;}}return 0;
}

运行结果

5.3示例3

int main()
{//替换所查找的字符std::string str("Please, replace the vowels in this sentence by asterisks.");std::size_t found = str.find_first_not_of("aeiou");while (found != std::string::npos){str[found] = '*';found = str.find_first_not_of("aeiou", found + 1);}return 0;
}

运行结果

摘要

首先,c_str方法用于将C++字符串转换为C风格字符串(以'\0'结尾),便于与C语言接口(如fopen)兼容。其次,get_allocator涉及STL内存池机制,日常使用较少关注。copy方法用于字符串拷贝但不会自动添加'\0',而substr则更常用,能直接返回一个新的字符串对象。
博客重点解析了查找相关接口:find要求完全匹配子串,find_first_of查找首次出现在指定字符集中的字符,find_first_not_of则查找未出现在字符集中的字符,并提供了相应的反向查找版本(如rfind)。通过三个示例展示了实际应用:提取文件后缀、拆分URL协议与域名、替换字符串中的特定字符。这些内容突出了string类在字符串处理中的灵活性和实用性,适用于文件操作、文本解析等多种场景。

http://www.dtcms.com/a/458233.html

相关文章:

  • Linux小课堂: 自由软件的崛起与发行版生态全景解析
  • wordpress 时间网站子页面如何做seo
  • wordpress网站从零深圳公司网站推广
  • 长春网站制作推广南宁网页制作步骤
  • 亳州网站开发公司哪里能找到网站
  • 做网站要注册公司吗永久免费linux服务器
  • 手机上网站重庆市建设工程信息网安全
  • 网站模板 素材.net网站
  • 专业手机网站制作哪家好友情链接建立遵循的原则包括
  • 通用:MySQL-InnoDB如何解决幻读问题——间隙锁
  • 什么是分布式异构?
  • 多进程编程和多线程编程的区别,以及应用场景
  • 联想笔记本哪个系列好?联想乐享 AI 智能体精准破局选购困境
  • 网站设计的技术方案网贷代理推广
  • Spring Boot 配置文件
  • 批量安装、卸载apk脚本
  • 加盟型网站制作番禺区网站建设公司
  • 视频网站的建设wordpress 模板吧
  • soapUI设置挡板,在mockaction中编写脚本实现根据请求参数的不同来返回不同的响应
  • 什么软件做网站描述排名优化网站
  • 宿城区建设局网站a站是指哪个网站
  • 十大营销网站一女被多男做的视频网站
  • 在使用Nacos作为注册中心和配置中心时,如何解决服务发现延迟或配置更新不及时的问题
  • 站长工具seo推广秒收录禹城网站制作
  • 吾日三省吾身 | 第三季度反思及展望
  • 时间序列预测的相关资源(论文、代码、数据集)
  • vs2013 网站开发怎么区分模板网站
  • 网站建设张景鹏黄骅市天气预报15天气
  • 北京网站建设北京株洲企业关键词优化最新报价
  • Day16_通信总线