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 Future 类及代码示例

《深入解析JavaFuture类及代码示例》JavaFuture是java.util.concurrent包中用于表示异步计算结果的核心接口,下面给大家介绍JavaFuture类及实例代码,感兴... 目录一、Future 类概述二、核心工作机制代码示例执行流程2. 状态机模型3. 核心方法解析行为总结:三

java String.join()方法实例详解

《javaString.join()方法实例详解》String.join()是Java提供的一个实用方法,用于将多个字符串按照指定的分隔符连接成一个字符串,这一方法是Java8中引入的,极大地简化了... 目录bVARxMJava String.join() 方法详解1. 方法定义2. 基本用法2.1 拼接

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

Java中的Closeable接口及常见问题

《Java中的Closeable接口及常见问题》Closeable是Java中的一个标记接口,用于表示可以被关闭的对象,它定义了一个标准的方法来释放对象占用的系统资源,下面给大家介绍Java中的Clo... 目录1. Closeable接口概述2. 主要用途3. 实现类4. 使用方法5. 实现自定义Clos

java对接第三方接口的三种实现方式

《java对接第三方接口的三种实现方式》:本文主要介绍java对接第三方接口的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录HttpURLConnection调用方法CloseableHttpClient调用RestTemplate调用总结在日常工作

Java 的 Condition 接口与等待通知机制详解

《Java的Condition接口与等待通知机制详解》在Java并发编程里,实现线程间的协作与同步是极为关键的任务,本文将深入探究Condition接口及其背后的等待通知机制,感兴趣的朋友一起看... 目录一、引言二、Condition 接口概述2.1 基本概念2.2 与 Object 类等待通知方法的区别

Python将字符串转换为小写字母的几种常用方法

《Python将字符串转换为小写字母的几种常用方法》:本文主要介绍Python中将字符串大写字母转小写的四种方法:lower()方法简洁高效,手动ASCII转换灵活可控,str.translate... 目录一、使用内置方法 lower()(最简单)二、手动遍历 + ASCII 码转换三、使用 str.tr

Spring Boot 常用注解整理(最全收藏版)

《SpringBoot常用注解整理(最全收藏版)》本文系统整理了常用的Spring/SpringBoot注解,按照功能分类进行介绍,每个注解都会涵盖其含义、提供来源、应用场景以及代码示例,帮助开发... 目录Spring & Spring Boot 常用注解整理一、Spring Boot 核心注解二、Spr

SpringBoot实现接口数据加解密的三种实战方案

《SpringBoot实现接口数据加解密的三种实战方案》在金融支付、用户隐私信息传输等场景中,接口数据若以明文传输,极易被中间人攻击窃取,SpringBoot提供了多种优雅的加解密实现方案,本文将从原... 目录一、为什么需要接口数据加解密?二、核心加解密算法选择1. 对称加密(AES)2. 非对称加密(R

Java中的内部类和常用类用法解读

《Java中的内部类和常用类用法解读》:本文主要介绍Java中的内部类和常用类用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录内部类和常用类内部类成员内部类静态内部类局部内部类匿名内部类常用类Object类包装类String类StringBuffer和Stri