string类及一些常用接口

2024-04-17 08:38
文章标签 接口 string 常用 类及

本文主要是介绍string类及一些常用接口,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

string中的常用构造方法
  1. string(); 构造一个空字符串。
  2. string(const char* s);用C风格字符串构造string类的对象
  3. string(size_t n,char c);构造一个含有n个字符c的字符串。
  4. string(const string& s);拷贝构造方法。
//构造方法
void Teststring1() {string s;string s1("hello world");cout << s1 << endl;const char* p = "hello world";string s2(p);cout << s2 << endl;string s3(s1);cout << s3 << endl;string s4(10, 'A');cout << s4 << endl;
}
遍历的常用方法
  1. 下标访问操作符
void Teststring2() {string s1("hello");for (size_t i = 0; i < s1.size(); i++) {cout << s1[i];}cout << endl;
}
  1. 迭代器
void Teststring3() {//正向迭代器string s1("hello");string::iterator it = s1.begin();while (it != s1.end()) {cout << *it;it++;}cout << endl;//反向迭代器string::reverse_iterator rit = s1.rbegin();while (rit != s1.rend()){cout << *rit;++rit;}cout << endl;
}
  1. 范围for
void Teststring4() {//范围forstring s1("hello");for (auto e : s1) {cout << e;}cout << endl;
}
string中对容量操作的常用方法
  1. size_t size() const返回字符串的有效长度.
  2. size_t length() const也是返回字符串的有效字符长度
  3. size_t capacity()const返回的是对象总容量的大小
  4. bool empt()const检测字符串是否为空
  5. void clear()清空字符串中的有效字符
  6. void resize(size_t n , char c)将字符串中的有效字符改成n个,多余的用字符c填充,也可以不传默认用\0填充。
  7. void reverse(size_t n = 0)将字符串容量大小调整到n
void Teststring5() {string s1("hello");cout << s1.size() << endl;cout << s1.capacity() << endl;if (s1.empty()) {cout << "空"<< endl;}else {cout << "不空"<< endl;}s1.clear();//size被清空 capacity没变cout << s1.size() << endl;cout << s1.capacity() << endl;
}
void Teststring6() {string s1("hello world");cout << s1 << endl;cout << s1.size() << endl;cout << s1.capacity() << endl;	s1.resize(20, '!');cout << s1 << endl;cout << s1.size() << endl;cout << s1.capacity() << endl;s1.resize(60, '!');cout << s1 << endl;cout << s1.size() << endl;cout << s1.capacity() << endl;
}

容量不够时会自动扩容,不同编译器内部扩容规则不太一样,容量够不会改变capacity的大小。

void Teststring7() {string s1("hello");cout << s1 << endl;cout << s1.size() << endl;cout << s1.capacity() << endl;s1.reserve(10);cout << s1 << endl;cout << s1.size() << endl;cout << s1.capacity() << endl;s1.reserve(20);cout << s1 << endl;cout << s1.size() << endl;cout << s1.capacity() << endl;s1.reserve(100);cout << s1 << endl;cout << s1.size() << endl;cout << s1.capacity() << endl;//15s1.reserve(15);cout << s1 << endl;cout << s1.size() << endl;cout << s1.capacity() << endl;cout << sizeof(string) << endl;
}

接收的参数大于内部的容量时会扩容,如果是缩减时,当参数大于15时,内部容量不会改变,当参数小于等于15时,容量缩小为15。(vs2019)

string改变字符串内容的常用方法
  1. void push_back (char c);在末尾插入字符c

  2. string& append (const string& str);
    string& append (const char* s);
    string& append (const char* s, size_t n);
    string& append (size_t n, char c);
    在字符串末尾追加字符或者字符串

  3. operator+= 在字符串末尾追加字符或者字符串

  4. size_t find (const string& str, size_t pos = 0) const;
    size_t find (char c, size_t pos = 0) const从pos
    从pos位置向后查找字符或者字符串,返回在原字符串中的位置。

  5. size_t rfind (const string& str, size_t pos = npos) const;
    size_t rfind (char c, size_t pos = npos) const
    从pos位置向前查找字符或者字符串,返回在原字符串中的位置。

  6. string substr (size_t pos = 0, size_t len = npos) const;
    从pos位置开始截取n个字符返回截取到的字符串。

  7. string& erase (size_t pos = 0, size_t len = npos);
    从pos位置开始删除多长的元素。

void Teststring8() {string s1("hello");s1 += 'c';cout << s1 << endl;s1 += "world";cout << s1 << endl;s1.append(3,'!');cout << s1 << endl;string s2("world");s2 = s2.append(s2, 1, 3);cout << s2 << endl;string s4("hello");
}
//insert
void Teststring9() {string s("world");s.insert(0, "hello");cout << s << endl;s.insert(4, 1, ' ');cout << s << endl;
}
//erase
void Teststring10() {string s("hello");s.erase(0,1);cout << s << endl;s.erase(s.begin());cout << s << endl;s.erase(s.begin(), s.end());cout << s << endl;
}
void Teststring11()
{string s("12345");//c风格字符串int value = atoi(s.c_str());cout << value << endl;
}
void Teststring12() {string s("lol.exe");string suffix = s.substr(s.find('.')+1);cout << suffix << endl;string s1("F:\\Game\\lol.exe");size_t pos1 = s1.rfind('\\')+1;size_t pos2 = s1.rfind('.')-1;string filename = s1.substr(pos1, pos2-pos1);cout << filename << endl;
}
void Teststring13() {string s1("abcdefgh");size_t n = s1.find("efg", 0);cout << n << endl;
}

这篇关于string类及一些常用接口的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/911314

相关文章

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

MyBatis-Flex BaseMapper的接口基本用法小结

《MyBatis-FlexBaseMapper的接口基本用法小结》本文主要介绍了MyBatis-FlexBaseMapper的接口基本用法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具... 目录MyBATis-Flex简单介绍特性基础方法INSERT① insert② insertSelec

Spring排序机制之接口与注解的使用方法

《Spring排序机制之接口与注解的使用方法》本文介绍了Spring中多种排序机制,包括Ordered接口、PriorityOrdered接口、@Order注解和@Priority注解,提供了详细示例... 目录一、Spring 排序的需求场景二、Spring 中的排序机制1、Ordered 接口2、Pri

CSS弹性布局常用设置方式

《CSS弹性布局常用设置方式》文章总结了CSS布局与样式的常用属性和技巧,包括视口单位、弹性盒子布局、浮动元素、背景和边框样式、文本和阴影效果、溢出隐藏、定位以及背景渐变等,通过这些技巧,可以实现复杂... 一、单位元素vm 1vm 为视口的1%vh 视口高的1%vmin 参照长边vmax 参照长边re

Idea实现接口的方法上无法添加@Override注解的解决方案

《Idea实现接口的方法上无法添加@Override注解的解决方案》文章介绍了在IDEA中实现接口方法时无法添加@Override注解的问题及其解决方法,主要步骤包括更改项目结构中的Languagel... 目录Idea实现接China编程口的方法上无法添加@javascriptOverride注解错误原因解决方

Python中操作Redis的常用方法小结

《Python中操作Redis的常用方法小结》这篇文章主要为大家详细介绍了Python中操作Redis的常用方法,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解一下... 目录安装Redis开启、关闭Redisredis数据结构redis-cli操作安装redis-py数据库连接和释放增

Java function函数式接口的使用方法与实例

《Javafunction函数式接口的使用方法与实例》:本文主要介绍Javafunction函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感... 目录引言-当代码遇见诗性一、函数式接口的生物学解构1.1 函数式接口的基因密码1.2 六大核心接口的形态学

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过