头文件:#include<string>

[注]:文中关于个数的参数文档中为 size_type 型,更本质是 size_t 型,因为typedef size_t size_type,而 size_t 在不同系统内实现不同,大概为 unsigned int 型,为简便起见,本文均写为 int 型。另外,string 的许多函数都有各种重载,本文所写的只是较常用的。

官方文档

赋值

  1. string 类型的变量可以直接赋值:

    string str = "hello world";		//可以直接赋值
    cout << str << endl; //string 不支持 C 语言,因此输出只能使用 cout 不能使用 printf

    输出:

    hello world
  2. 使用 string 的构造函数来实现拷贝的效果:

    string substr = string(string str, int start, int num);

    由此得到的 substr 是截取字符串 strstartnum 个字符。

  3. 关于子串还有函数 substr(int start, int num) ,其效果同上。

    举例如下:

    //返回子字符串 substr
    string str = "012345678";
    string substr = str.substr(1,3);
    cout << substr << endl; substr = string(str, 2, 5);
    cout << substr << endl;

    输出:

    123
    23456

长度

​ 函数 string.size()string.length() 均可返回本字符串长度,返回值类型为 int(size_t)

运算符

  1. 字符串连接 +

    举例如下:

    string str1 = "abc", str2 = "def";
    str = str1 + str2;
    cout << str << endl;

    输出:

    abcdef
  2. 字典序比较:> < >= <= != ==

遍历/访问

  1. 使用下标 [] 访问

    同字符数组。

  2. 使用迭代器访问

    举例如下:

    	string str = "hello world";		//可以直接赋值
    printf("按元素下标访问:%c %c\n", str[0], str[str.size()-1]);
    //可以按照元素下标访问 //通过迭代器 iterator 访问 迭代器类似于指针
    printf("迭代器访问str:\t");
    for(string::iterator it = str.begin(); it != str.end(); ++it)
    {
    printf("%c ", *it);
    }
    printf("\n");
    printf("str.begin() = #%c#", *str.begin()); //迭代器类似于指针 要加 *
    printf("str.end() = #%c#", *str.end());

    输出:

    按元素下标访问:h d
    迭代器访问str: h e l l o w o r l d
    str.begin() = #h#str.end() = # #

增删改查

  1. 插入 string.insert(int pos, string str)

    其作用为在字符串 stringpos 个字符处插入字符串 str

  2. 删除 string.erase(int pos, int len)

    其作用为从字符串 stringpos 个字符处删除 len 个字符。

  3. 清空字符串 string.clear()

  4. 判断字符串是否为空 string.empty()

    举例如下:

    	string str = "hello world";
    
    	//插入
    str.insert(0, "Start "); //在开头插入
    cout << "开头插入:" << str << endl;
    str.insert(str.size(), " End."); //在末尾插入
    cout << "末尾插入:" << str << endl;
    str.insert(6, "Middle "); //在中间插入
    cout << "中间插入:" << str << endl; //删除
    str.erase(0,1); //删除 从第 0 位开始的 1 个
    cout << "删除第一个元素:" << str << endl;
    str.erase(0, 2); //删除 从第 0 位开始的 2 个
    cout << "删除前两个元素:" << str << endl;
    cout << str.empty() << endl;
    str.clear(); //清空
    cout << str.empty() << endl;

    输出:

    开头插入:Start hello world
    末尾插入:Start hello world End.
    中间插入:Start Middle hello world End.
    删除第一个元素:tart Middle hello world End.
    删除前两个元素:rt Middle hello world End.
    0
    1
  5. 替换 string.replace(int pos, int len, string temp)

    其作用为替换 string 字符串从 poslen 个字符为 字符串 temp 。举例如下:

    string str = "123456";
    string temp = "abc";
    str.replace(0, 1, temp);
    cout << str << endl;

    输出为:

     abc23456
  6. 查询 string.find()

    本函数用于在字符串 string 中寻找字符或字符串,若找到则返回其第一个字符所在下标位置,若没有对应字符或字符串,则返回 string.npos ,即 -1 。举例如下:

        string str = "hello world";
    
        int found = str.find("world");
    if(found != str.npos) //npos = -1
    {
    printf("%d\n", found);
    } found = str.find('l');
    if(found != str.npos)
    {
    printf("%d\n", found);
    } found = str.find('.');
    if(found == str.npos)
    printf("Not found!\n");

    输出为:

    6
    2
    Not found!

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

  1. C++ string 常用函数

    C++ String常用函数 一,类型别名 size_type 无符号整型 iterator 迭代器类型 const_iterator 只读迭代器 reverse_iterator 逆序迭代器 con ...

  2. C#string常用函数总结

    补充:             1:在C语言里 char占1个字节 而在C#,Java里char占两个字节 数据库里char 中汉占两个字节 字母数字占一个字             2:string ...

  3. 【STL】string 常用函数

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

  4. 【转】string常用函数

    原文地址:http://hi.baidu.com/baowup/blog/item/3a27465c86d71546faf2c066.html/cmtid/de1ef3f0de7554a0a40f52 ...

  5. String 类的实现(5)String常用函数

      2 #include<iostream> 3 #include<stdio.h> 4 #include<assert.h> 5 #include <iom ...

  6. stl string常用函数

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

  7. C++中的string常用函数用法

    标准c++中string类函数介绍   注意不是CString 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够.字符串长度等等,而 ...

  8. c++标准库中的string常用函数总结《转》

    标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有 ...

  9. STL string 常用函数(转)

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

  10. c++中的string常用函数用法总结!

    标准c++中string类函数介绍 注意不是CString 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够.字符串长度等等,而且作 ...

随机推荐

  1. [源码分析] Facebook如何训练超大模型 --- (3)

    [源码分析] Facebook如何训练超大模型 --- (3) 目录 [源码分析] Facebook如何训练超大模型 --- (3) 0x00 摘要 0x01 ZeRO-Offload 1.1 设计原 ...

  2. pytest文档4-fixture之conftest.py

    用例1需要先登录,用例2不需要登录,用例3需要先登录.很显然这就无法用setup和teardown来实现了.fixture之conftest.py就是自定义测试用例的预置条件 1.firture相对于 ...

  3. MySQL函数学习(一)-----字符串函数

    一.MySQL 字符串函数 \ 函 数 名 称 作 用 完 成 1 LENGTH 计算字符串字节长度 勾 2 CONCAT 合并字符串函数,返回结果为连接参数产生的字符串,参数可以是一个或多个 勾 3 ...

  4. Springboot +redis+⾕歌开源Kaptcha实现图片验证码功能

    Springboot +redis+⾕歌开源Kaptcha实现图片验证码功能 背景 注册-登录-修改密码⼀般需要发送验证码,但是容易被 攻击恶意调⽤ 什么是短信-邮箱轰炸机 手机短信轰炸机是批.循环给 ...

  5. 学习JAVAWEB第十二天

    ## Servlet: 1. 概念 2. 步骤 3. 执行原理 4. 生命周期 5. Servlet3.0 注解配置 6. Servlet的体系结构 Servlet -- 接口 | GenericSe ...

  6. Homework_1

    寒假第一份作业 一.博客园部分 1.个人博客园链接 Click here 2.markdown界面截图 我用typora编辑 所以贴上typora界面的截图 二.Github部分 1.个人Github ...

  7. docker daemon

    docker启动最先加载Docker Daemon. Docker Daemon的启动文件放在/etc/systemd/system/docker.service.d目录中,如果没有则手工创建该目录并 ...

  8. C++ 构造函数、析构函数与虚函数的关系

    编译环境:windows 10 + VS2105 1.构造函数不能为虚函数 虚函数的作用是为了实现C++多态机制.基类定义虚函数,子类可以重写该虚函数.当子类重写父类虚函数后,父类指针指向子类地址时, ...

  9. C++ 类对象内存模型分析

    编译环境:Windows10 + VS2015 1.空类占用的内存空间 类占内存空间是只类实例化后占用内存空间的大小,类本身是不会占内存空间的.用sizeof计算类的大小时,实际上是计算该类实例化后对 ...

  10. 线程池与Callable接口

    定义: 一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源. 使用方法 public void lockDemo() throws Inter ...