来自https://www.cnblogs.com/jm-Xu/p/9318705.html

string(s小写)是C++标准库中的类,纯C中没有,使用时需要包含头文件#include<string>

 string的定义及初始化
string s1 = "hello"; //初始化字符串
string s2 ("world"); //另一种初始化 string s3; //初始化字符串,空字符串 string s4(, 'a'); //s4由连续5个a组成,即s4="aaaaa";
string s5(s1,,); //从s1的2位置的字符开始,连续3个字符赋值给s5,即s5="llo";
string s6(s1, ); //从s1的2位置的字符开始,将后续的所有字符赋值给s6,即s6="ello";
 重载的运算符
此处列举一下被重载的运算符,基本意思一目了然。其中注意“+”操作
s1 = s2;
s1 += s2;
s1 = s2 + s3;
s1 == s2;
s1 = "s" + s2; //正确
s1 = "s" + "s"; //错误,加号两边至少要有一个string类型的对象
s1 = "s" + s2 + "s" + "s"; //正确 “+”的两边要保证至少有一个string类型,所以5正确,6错误。由于在C/C++中,+的返回值还是原类型,所以第7行中,"s"+s2返回一个string类型,因此string+“s”也是正确的,
 遍历string(迭代器)
遍历string中的元素时,我们可以使用类似C中的数组形式访问,如s1[](下标从0开始) 也可以使用STL特有的迭代器访问:
string::iterator it;
for (it = s1.begin(); it != s1.end(); it++){
cout << *it << endl;
} cout << *(s1.begin()); //正确,即访问s1[0]
cout << *(s1.end()); //错误,s1.end()指向了空
若想要从后向前遍历string时,可以用到rbegin()和rend()函数。
(参考vector博文)

 插入insert()
string s1 = "hello";
s1.insert(,"ins"); //从s1的1位置开始,插入"ins"字符串,即s1="hinsello";
s1.insert(, "ins", );//从s1的1位置开始,插入"ins"字符串的前2个字符,即s1="hinello";
s1.insert(, "ins", , );//从s1的1位置开始,插入"ins"字符串的从1位置开始的2个字符,即s1="hnsello"; iterator insert(iterator it, char c);//在it处插入字符c,返回插入后迭代器的位置
 删除erase()
iterator erase(iterator first, iterator last);//删除[first,last)之间的所有字符,返回删除后迭代器的位置
iterator erase(iterator it);//删除it指向的字符,返回删除后迭代器的位置
string &erase(int pos = , int n = npos);//删除pos开始的n个字符,返回修改后的字符串 查找 find()
cout << s.find("aa", ) << endl; //返回的是子串位置。第二个参数是查找的起始位置,如果找不到,就返回string::npos
if (s.find("aa1", ) == string::npos)
{
cout << "找不到该子串!" << endl;
}

C++常用string函数的更多相关文章

  1. Python 常用string函数

    Python 常用string函数 字符串中字符大小写的变换 1. str.lower()   //小写>>> 'SkatE'.lower()'skate' 2. str.upper ...

  2. string类(二、常用string函数)

    常用string相关,参至System.String类: 1/ string.Length a.Length字符串长度 string a="a5"; //a.Length==2 s ...

  3. 常用string函数分析

    string函数分析string函数包含在string.c文件中,经常被C文件使用.1. strcpy函数原型: char* strcpy(char* str1,char* str2);函数功能: 把 ...

  4. php常用string函数

    http://www.w3school.com.cn/php/php_ref_string.asp1.addcslashes() 返回在指定的字符前添加反斜杠的字符串2.addslashes() 返回 ...

  5. string中常用的函数

    string中常用的函数 发现在string在处理这符串是很好用,就找了一篇文章放在这里了.. 用 string来代替char * 数组,使用sort排序算法来排序,用unique 函数来去重1.De ...

  6. string常用成员函数

    string常用成员函数 std::string::clear Clear string Erases the contents of the string, which becomes an emp ...

  7. php常用字符串函数小结

    php内置了98个字符串函数(除了基于正则表达式的函数,正则表达式在此不在讨论范围),能够处理字符串中能遇到的每一个方面内容,本文对常用字符串函数进行简单的小结,主要包含以下8部分:1.确定字符串长度 ...

  8. byte数据的常用操作函数[转发]

    /// <summary> /// 本类提供了对byte数据的常用操作函数 /// </summary> public class ByteUtil { ','A','B',' ...

  9. c++:string函数

    string类的构造函数:string(const char *s);    //用c字符串s初始化string(int n,char c);     //用n个字符c初始化此外,string类还支持 ...

随机推荐

  1. 小菜鸟之java内存结构

    JVM启动流程: JVM基本结构图: <深入理解Java虚拟机(第二版)>中的描述是下面这个样子的: Java中的内存分配: Java程序在运行时,需要在内存中的分配空间.为了提高运算效率 ...

  2. MySQL中关于主从数据库同步延迟的问题解决

    MySQL的主从同步是一个很成熟的架构,优点为:①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;②在从主服务器进行备份,避免备份期间影响主服务器服务;③当主服务器出现问题时,可以 ...

  3. 设计模式:职责链模式(Chain of Responsibility)

    去年参加校招要到长沙来,这个对于我来说不是特别喜欢(但又必须的来,谁叫咱不是985.211的娃呢),但是对于某些人来说就是福音了.大四还有课,而且学校抓的比较严,所以对于那些想翘课的人来说这个是最好不 ...

  4. 基于 Vue.js 2.0 酷炫自适应背景视频登录页面的设计『转』

    本文讲述如何实现拥有酷炫背景视频的登录页面,浏览器窗口随意拉伸,背景视频及前景登录组件均能完美适配,背景视频可始终铺满窗口,前景组件始终居中,视频的内容始终得到最大限度的保留,可以得到最好的视觉效果. ...

  5. Go语言流程控制中的break,continue和goto(七)

    break(跳出循环) break用于跳出整个循环,如下: func main() { ;i<;i++{ { break } fmt.Println(i) } } // 0 1 2 3 代码里只 ...

  6. FFmpeg4.0笔记:封装ffmpeg的音频重采样功能类CSwr

    Github https://github.com/gongluck/FFmpeg4.0-study/tree/master/Cff CSwr.h /************************* ...

  7. 5表联查yii框架权限控制

    一:控制器部分 <?php namespace app\controllers; use yii\web\Controller; class PreController extends Cont ...

  8. Java排序--排序算法(内排序)

    常用内排序算法 我们通常所说的排序算法往往指的是内部排序算法,即需要排序的数据在计算机内存中完成整个排序的过程,当数据率超大或排序较为繁琐时常借助于计算机的硬盘对大数据进行排序工作,称之为外部排序算法 ...

  9. 异常-finally关键字的特点及作用

    package cn.itcast_07; import java.text.ParseException; import java.text.SimpleDateFormat; import jav ...

  10. JAVA高级语法

    高级语法 第三章:面向对象和高级语法 实例化: 不实例化,就是一个空指针 注意,声明和实例化是两个过程.声明的过程是不分配内存空间的,只有实例化才会真正分配空间 对变量的分类 实例变量只有实例化之后才 ...