String类(下)

简介: String类

String类(上):https://developer.aliyun.com/article/1389435

🌙Element access(元素访问)

这个板块做为了解,知道有就行了😇😇。

💫at函数

返回对字符串中位置pos处的字符的引用。本质上还是一种遍历。

咱们看看代码:

#include <iostream>
#include <string>
int main()
{
    std::string str("Test string");
    for (unsigned i = 0; i < str.length(); ++i)
    {
        std::cout << str.at(i);
    }
    return 0;
}

运行结果:

这里捏还有很多函数就不再细讲咯,有兴趣老铁们翻翻看看。

🌙Modifiers(修改器)

这个接口重重重重点,这里会讲解插入删除.....🤪🤪🤪🤪

💫operator+=插入操作

这种操作本质上是一种赋值运算重载,用起来真的爽,它不仅可以插入新的string对象,还可以插入常量字符串,也可以插入单个字符,我们平时使用最多的方式也是这个方式。

咱们看看代码:

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string s("hello ");
    // 插入常量字符串
    s += "world"; 
    cout << s << endl;
    string str("world");
    // 插入新的string对象
    s += str; 
    cout << s << endl;
    // 插入单个字符
    s += 'A';
    cout << s << endl;
    return 0;
}

运行结果:

💫append插入操作

它可以插入字符串,可以插入另一个string对象,而且可以指定n个字符插入,非常多样化。

 咱们看看代码:

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string s("hello ");
    // 插入常量字符串
    s.append("world");
    cout << s << endl;
    string str("world");
    // 插入另一个string对象
    s.append(str);
    cout << s << endl;
    return 0;
}

运行结果:

💫push_back插入操作

将字符c追加到字符串的末尾,使其长度增加一,也就是说push_back函数只能够尾插入一个字符,不能插入字符串。

 咱们看看代码:

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string s("hello ");
    // 插入一个字符
    s.push_back('C');
    cout << s << endl;
    return 0;
}

运行结果:

💫insert插入操作

insert函数可以在任意的指定位置进行插入。

它可以在任意的指定位置

  • 插入一个新的string对象
  • 一个常量字符串
  • 一个常量字符串的n个字符
  • 一个字符
  • 等等....

 咱们看看代码:

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string s("hello");
    // 在下标为0的位置插入一个新的string对象
    string str("hello world");
    s.insert(0, str);
    cout << s << endl;
    // 在下标为0的位置插入一个常量字符串
    s.insert(0, "hello world");
    cout << s << endl;
    // 在下标为0的位置插入一个常量字符串的前3个字符
    s.insert(0, "hello world", 3);
    cout << s << endl;
    // 在下标为0的位置插入一个字符x
    s.insert(0, 1, 'x');
    s.insert(s.begin(), 'x');
    cout << s << endl;
    // 在下标为0的位置插入三个字符x
    s.insert(0, 3, 'x');
    cout << s << endl;
    return 0;
}

运行结果:

💫erase删除操作

擦除字符串的一部分,缩短其长度,本质上erase函数删除任意指定位置的n个字符

  咱们看看代码:

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string s("hello world");
    // 删除下标为3位置的一个字符
    s.erase(3, 1);
    cout << s << endl;
    // 删除以下标为3位置为起点的3个字符
    s.erase(3, 3);
    cout << s << endl;
    // 删除以下标为3位置为起点往后的所有字符
    s.erase(3);
    cout << s << endl;
    return 0;
}

运行结果:

💫pop_back删除操作

擦除字符串的最后一个字符,有效地将其长度减少一个,本质上可以实现string对象的尾删操作。

  咱们看看代码:

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string s("hello world");
    s.pop_back();
    cout << s << endl;
    return 0;
}

 运行结果:

💫swap交换操作

实现两个对象之间的交换。

  咱们看看代码:

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string s1("hello world");
    string s2("string");
    s1.swap(s2);
    cout << s1 << endl;
    cout << s2 << endl;
    return 0;
}

 运行结果:

🌙String operations (字符串操作

       这个板块主要讲解的是,字符串的查找呀,返回值。在许多的题中都运用这块知识,望大家好好体会叭🫣🫣🫣。

💫c_str返回值

返回一个指向数组的指针,该数组包含一个以null结尾的字符序列(即C字符串),咱们可以用这个函数实现返回string对象对应的char * 指针

  咱们看看代码:

//将string对象的内容通过strcpy函数拷贝到字符数组当中
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main()
{
    string str("hello world");
    char* cstr = new char[str.size() + 1];
    strcpy(cstr, str.c_str());
    cout << cstr << endl;
    return 0;
}

 运行结果:

💫find查找

查找string对象、常量字符串或者是一个字符,并且可以设定pos值来规定查找的起始位置,默认从0下标开始查找。

  咱们看看代码:

// string::find
#include <iostream>       // std::cout
#include <string>         // std::string
int main()
{
    std::string str("There are two needles in this haystack with needles.");
    std::string str2("needle");
    // different member versions of find in the same order as above:
    std::size_t found = str.find(str2);
    if (found != std::string::npos)
        std::cout << "first 'needle' found at: " << found << '\n';
    found = str.find("needles are small", found + 1, 6);
    if (found != std::string::npos)
        std::cout << "second 'needle' found at: " << found << '\n';
    found = str.find("haystack");
    if (found != std::string::npos)
        std::cout << "'haystack' also found at: " << found << '\n';
    found = str.find('.');
    if (found != std::string::npos)
        std::cout << "Period found at: " << found << '\n';
    // let's replace the first needle:
    str.replace(str.find(str2), str2.length(), "preposition");
    std::cout << str << '\n';
    return 0;
}

 运行结果:

💫find查找

rfind是倒着查找。find函数和rfind函数的区别就是查找方向不同。

这里就不再上代码咯。

💫substr

返回string字符串的一个任意子串

咱们看看代码:

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string s1("hello world");
    // 取出子串"world"
    string s2 = s1.substr(6, 5);
    cout << s2 << endl;
    return 0;
}

运行结果:

到这里还有很多函数没有介绍:

可以去看看官网中它们的使用方法。

🌟结束语

      今天内容就到这里啦,时间过得很快,大家沉下心来好好学习,会有一定的收获的,大家多多坚持,嘻嘻,成功路上注定孤独,因为坚持的人不多。那请大家举起自己的小说手给博主一键三连,有你们的支持是我最大的动力💞💞💞,回见。

目录
相关文章
|
2月前
|
Java 索引
java基础(13)String类
本文介绍了Java中String类的多种操作方法,包括字符串拼接、获取长度、去除空格、替换、截取、分割、比较和查找字符等。
38 0
java基础(13)String类
|
3月前
|
API 索引
String类下常用API
String类下常用API
43 1
|
1月前
|
Java
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
本文深入探讨了Java中方法参数的传递机制,包括值传递和引用传递的区别,以及String类对象的不可变性。通过详细讲解和示例代码,帮助读者理解参数传递的内部原理,并掌握在实际编程中正确处理参数传递的方法。关键词:Java, 方法参数传递, 值传递, 引用传递, String不可变性。
51 1
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
|
27天前
|
安全 Java 测试技术
Java零基础-StringBuffer 类详解
【10月更文挑战第9天】Java零基础教学篇,手把手实践教学!
24 2
|
30天前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
21 1
|
1月前
|
数据可视化 Java
让星星月亮告诉你,通过反射创建类的实例对象,并通过Unsafe theUnsafe来修改实例对象的私有的String类型的成员属性的值
本文介绍了如何使用 Unsafe 类通过反射机制修改对象的私有属性值。主要包括: 1. 获取 Unsafe 的 theUnsafe 属性:通过反射获取 Unsafe类的私有静态属性theUnsafe,并放开其访问权限,以便后续操作 2. 利用反射创建 User 类的实例对象:通过反射创建User类的实例对象,并定义预期值 3. 利用反射获取实例对象的name属性并修改:通过反射获取 User类实例对象的私有属性name,使用 Unsafe`的compareAndSwapObject方法直接在内存地址上修改属性值 核心代码展示了详细的步骤和逻辑,确保了对私有属性的修改不受 JVM 访问权限的限制
49 4
|
2月前
|
安全 Java
String类-知识回顾①
这篇文章回顾了Java中String类的相关知识点,包括`==`操作符和`equals()`方法的区别、String类对象的不可变性及其好处、String常量池的概念,以及String对象的加法操作。文章通过代码示例详细解释了这些概念,并探讨了使用String常量池时的一些行为。
String类-知识回顾①
|
1月前
|
存储 安全 Java
【一步一步了解Java系列】:认识String类
【一步一步了解Java系列】:认识String类
24 2
|
1月前
|
安全 C语言 C++
【C++篇】探寻C++ STL之美:从string类的基础到高级操作的全面解析
【C++篇】探寻C++ STL之美:从string类的基础到高级操作的全面解析
33 4
|
1月前
|
存储 编译器 程序员
【C++篇】手撕 C++ string 类:从零实现到深入剖析的模拟之路
【C++篇】手撕 C++ string 类:从零实现到深入剖析的模拟之路
63 2