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.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘

go中空接口的具体使用

《go中空接口的具体使用》空接口是一种特殊的接口类型,它不包含任何方法,本文主要介绍了go中空接口的具体使用,具有一定的参考价值,感兴趣的可以了解一下... 目录接口-空接口1. 什么是空接口?2. 如何使用空接口?第一,第二,第三,3. 空接口几个要注意的坑坑1:坑2:坑3:接口-空接口1. 什么是空接

如何解决mysql出现Incorrect string value for column ‘表项‘ at row 1错误问题

《如何解决mysql出现Incorrectstringvalueforcolumn‘表项‘atrow1错误问题》:本文主要介绍如何解决mysql出现Incorrectstringv... 目录mysql出现Incorrect string value for column ‘表项‘ at row 1错误报错

Linux上设置Ollama服务配置(常用环境变量)

《Linux上设置Ollama服务配置(常用环境变量)》本文主要介绍了Linux上设置Ollama服务配置(常用环境变量),Ollama提供了多种环境变量供配置,如调试模式、模型目录等,下面就来介绍一... 目录在 linux 上设置环境变量配置 OllamPOgxSRJfa手动安装安装特定版本查看日志在

Java常用注解扩展对比举例详解

《Java常用注解扩展对比举例详解》:本文主要介绍Java常用注解扩展对比的相关资料,提供了丰富的代码示例,并总结了最佳实践建议,帮助开发者更好地理解和应用这些注解,需要的朋友可以参考下... 目录一、@Controller 与 @RestController 对比二、使用 @Data 与 不使用 @Dat

Mysql中深分页的五种常用方法整理

《Mysql中深分页的五种常用方法整理》在数据量非常大的情况下,深分页查询则变得很常见,这篇文章为大家整理了5个常用的方法,文中的示例代码讲解详细,大家可以根据自己的需求进行选择... 目录方案一:延迟关联 (Deferred Join)方案二:有序唯一键分页 (Cursor-based Paginatio

java String.join()的使用小结

《javaString.join()的使用小结》String.join()是Java8引入的一个实用方法,用于将多个字符串按照指定分隔符连接成一个字符串,本文主要介绍了javaString.join... 目录1. 方法定义2. 基本用法2.1 拼接多个字符串2.2 拼接集合中的字符串3. 使用场景和示例3

Python实现常用文本内容提取

《Python实现常用文本内容提取》在日常工作和学习中,我们经常需要从PDF、Word文档中提取文本,本文将介绍如何使用Python编写一个文本内容提取工具,有需要的小伙伴可以参考下... 目录一、引言二、文本内容提取的原理三、文本内容提取的设计四、文本内容提取的实现五、完整代码示例一、引言在日常工作和学

Redis中的常用的五种数据类型详解

《Redis中的常用的五种数据类型详解》:本文主要介绍Redis中的常用的五种数据类型详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis常用的五种数据类型一、字符串(String)简介常用命令应用场景二、哈希(Hash)简介常用命令应用场景三、列表(L