C++ string中的函数和常用用法

简介: C++ 中string中的函数和常用用法

string中常用操作函数:

s.substr(p,n) 截取字符的某个子串。p表示字符串的某个下标,n表示长度,返回字符串s中下标从p开始的n个字符的字符串,如果n省略就取到底。

s.erase(p,n) 删除s中从p开始的n个字符,如果n省略,就取到底。

s.erase(string::iterator it)删除it 位置的字符

s.erase(s.first,s.last),删除first-last之间的所有元素

s1.insert(p,s2,pos,n) 在字符串s1位置p前插入字符串s2,后面两个参数可以省略。如果有后面两个参数pos和n,则从s2中截取从pos位置开始长度为n的字符串,插入到字符串s1位置p前。

s.find(s1) 在字符串s中从前往后查找s1,如果能找到,返回第一次出现的s1首字母下标位置,找不到返回-1 (找不到也可写成返回string::npos

s.find(s1,pos) 是用来寻找从字符串s1中pos开始(包括pos处字符)匹配s1的位置。

s.rfind(s1) 在s中从后往前寻找字符串s1后边第一次出现的下标。

s.rfind(s1,pos)在s中从pos位置开始从后往前寻找字符串s1后边第一次出现的下标。

s.insert(p,n,c) 在字符串s中p位置前插入n个字符c。

s.clear() 清空字符串

string s; s="12321"; s=""; 给字符串赋值空串来清空

s.size() 或者s.length() 返回字符串s的长度。

s.empty() 判断字符串s是否为空,为空返回1,非空返回0。

s[i] 返回字符串s中下标为i的位置,string中下标也是从0开始。

count(s.begin(),s.end(), 'a')可以用来统计字符串中某个字符的个数

赋值运算符:= 将后面的字符串赋值给前面的字符串

比较运算符:== != < <= > >= 比较两个字符串的字典序大小

连接运算符: + += 将一个字符串加到另一个字符串后面

相关文章
|
8天前
|
人工智能 机器人 编译器
c++模板初阶----函数模板与类模板
class 类模板名private://类内成员声明class Apublic:A(T val):a(val){}private:T a;return 0;运行结果:注意:类模板中的成员函数若是放在类外定义时,需要加模板参数列表。return 0;
|
6月前
|
存储 安全 编译器
第二问:C++中const用法详解
`const` 是 C++ 中用于定义常量的关键字,主要作用是防止值被修改。它可以修饰变量、指针、函数参数、返回值、类成员等,确保数据的不可变性。`const` 的常见用法包括:
259 2
|
3月前
|
安全 C++
【c++】继承(继承的定义格式、赋值兼容转换、多继承、派生类默认成员函数规则、继承与友元、继承与静态成员)
本文深入探讨了C++中的继承机制,作为面向对象编程(OOP)的核心特性之一。继承通过允许派生类扩展基类的属性和方法,极大促进了代码复用,增强了代码的可维护性和可扩展性。文章详细介绍了继承的基本概念、定义格式、继承方式(public、protected、private)、赋值兼容转换、作用域问题、默认成员函数规则、继承与友元、静态成员、多继承及菱形继承问题,并对比了继承与组合的优缺点。最后总结指出,虽然继承提高了代码灵活性和复用率,但也带来了耦合度高的问题,建议在“has-a”和“is-a”关系同时存在时优先使用组合。
191 6
|
7月前
|
存储 C++ 容器
【C++】map、set基本用法
本文介绍了C++ STL中的`map`和`set`两种关联容器。`map`用于存储键值对,每个键唯一;而`set`存储唯一元素,不包含值。两者均基于红黑树实现,支持高效的查找、插入和删除操作。文中详细列举了它们的构造方法、迭代器、容量检查、元素修改等常用接口,并简要对比了`map`与`set`的主要差异。此外,还介绍了允许重复元素的`multiset`和`multimap`。
152 3
【C++】map、set基本用法
|
6月前
|
C++
第十三问:C++中静态变量的用法有哪些?
本文介绍了 C++ 中静态变量和函数的用法及原理。静态变量包括函数内的静态局部变量和类中的静态成员变量,前者在函数调用间保持值,后者属于类而非对象。静态函数不能访问非静态成员,但可以通过类名直接调用。静态链接使变量或函数仅在定义文件内可见,避免命名冲突。
160 0
|
8月前
|
程序员 C++ 容器
在 C++中,realloc 函数返回 NULL 时,需要手动释放原来的内存吗?
在 C++ 中,当 realloc 函数返回 NULL 时,表示内存重新分配失败,但原内存块仍然有效,因此需要手动释放原来的内存,以避免内存泄漏。
|
8月前
|
存储 前端开发 C++
C++ 多线程之带返回值的线程处理函数
这篇文章介绍了在C++中使用`async`函数、`packaged_task`和`promise`三种方法来创建带返回值的线程处理函数。
273 6
|
8月前
|
C++
C++ 多线程之线程管理函数
这篇文章介绍了C++中多线程编程的几个关键函数,包括获取线程ID的`get_id()`,延时函数`sleep_for()`,线程让步函数`yield()`,以及阻塞线程直到指定时间的`sleep_until()`。
98 0
C++ 多线程之线程管理函数
|
8天前
|
存储 编译器 C语言
关于string的‘\0‘与string,vector构造特点,反迭代器与迭代器类等的讨论
你真的了解string的'\0'么?你知道创建一个string a("abcddddddddddddddddddddddddd", 16);这样的string对象要创建多少个对象么?你知道string与vector进行扩容时进行了怎么的操作么?你知道怎么求Vector 最大 最小值 索引 位置么?
|
3月前
|
缓存 安全 Java
《从头开始学java,一天一个知识点》之:字符串处理:String类的核心API
🌱 **《字符串处理:String类的核心API》一分钟速通!** 本文快速介绍Java中String类的3个高频API:`substring`、`indexOf`和`split`,并通过代码示例展示其用法。重点提示:`substring`的结束索引不包含该位置,`split`支持正则表达式。进一步探讨了String不可变性的高效设计原理及企业级编码规范,如避免使用`new String()`、拼接时使用`StringBuilder`等。最后通过互动解密游戏帮助读者巩固知识。 (上一篇:《多维数组与常见操作》 | 下一篇预告:《输入与输出:Scanner与System类》)
97 11