stirng类型

简介:

C++标准库提供的类型:string

长度可变的字符串

操作简单

仅为包含个人常用函数

头文件

string 类型与其它的标准库类型相同,都需要包含对应的头文件

#include<string>
using namespace std;

string 类型的定义和初始化

定义及初始化 解释
string s1 = "C++"; 创建字符串s1, 如果省略 = "C++" 则为空串
stirng s2(s1); 创建字符串s2并初始化值为s1的值(C++)
string s3("Love") 创建字符串s3并初始化为 Love
string s4(6,'I') 创建字符串s4并初始化为连续6个字符为'I',组成的字符串

string 类型的函数

  • 字符串的赋值

    string s1 = "I LOVE C++";
    string s2;
    s2 = s1;
    cout<<s2;

    输入及输出:

    I LOVE C++

  • 字符串的 +,+= 运算符

    string s1 = "I ";
    string s2 = "LOVE ";
    string s3 = "C++";
    s1 = s1 + s2;
    cout<<s1<<endl;
    s1 += s3;
    cout<<s1<<endl;

    输入及输出:

    I LOVE

    I LOVE C++

  • 字符串的关系运算符

    string 类型可以直接使用==,!=,>,<,>=,<=等关系运算符来进行字符串的比较,并返回布尔类型

    //EG:
    string s1 = "123";
    string s2 = "123";
    cout<<(s1 == s2 ? "s1 = s2" : "s1 != s2");

    输入及输出:

    s1 = s2

  • 字符串的读取

    1. cin方式

      读取时自动忽略开头的空白字符

      当读取到字符后一旦遇到空白字符,结束读取

      string s1;
      cin>>s1;
      cout<<s1;

      输入及输出:

      Hello World

      Hello

    2. getline方式

      包含在 string 库内

      1. istream& getline (istream& is, string& str);

        string str;
        getline(cin,str);
        cout<<str;

        输入及输出:

        Hello World

        abc

        Hello World

        每次输入为一行, 遇到'\n'结束输入

      2. istream& getline (istream& is, string& str, char delim);

        string str;
        getline(cin,str,'#');
        cout<<str;

        输入及输出:

        abc def#abc

        abc def

        当以'#'为结尾术符,'#'及'#'以后的字符就不再读取

  • 字符串长度

    size()/lenth()均可, 返回该字符串的长度(字节长度)

    string s1;
    cout<<s1.size()<<endl;
    cout<<s1.lenth()<<endl; s1 = "Hello World";
    cout<<s1.size()<<endl;
    cout<<s1.lenth()<<endl; s1 = "你好";
    cout<<s1.size()<<endl;
    cout<<s1.lenth()<<endl;

    输入及输出:

    0

    0

    11

    11

    4

    4

  • 字符串获取字符

    str[n]:返回str中的第n个字符,从0到size()-1

    string str = "I Love C++"
    cout<<str[0]<<endl;
    a[7] = 'A';
    cout<<str;

    输入及输出:

    I

    I Love A++

  • 字符串判空

    empty() 返回布尔类型

    string s1;
    if(s1.empty())
    cout<<"s1字符串为空";

    输入及输出:

    s1字符串为空

  • 字符串查找

    string中的find()返回值是第一次字符或字符串出现的下标,如果没找到,那么会返回npos。

    string s1 = "C++";
    string s2 = "I LOVE C++";
    cout<<s1.find(s2)<<endl;
    cout<<s1.find("Hello")<<endl;

    输入及输出:

    7

    4294967295 (极大的值或极小的值)

  • 字符串内的排序

    string str = "cba";
    sort(str.begin(), str.end());
    cout<<str;

    输入及输出:

    abc

C++标准库之string类型的更多相关文章

  1. 彻底弄清c标准库中string.h里的常用函数用法

    在我们平常写的c/c++程序,一些算法题中,我们常常会用到c标准库中string.h文件中的函数,这些函数主要用于处理内存,字符串相关操作,是很有用的工具函数.而且有些时候,在笔试或面试中也会出现让你 ...

  2. c++标准库的所有类型

    标准库的组成:    前言就到此为止.从最宏观的层面上看,C++标准库由十个部分组成:语言支持.诊断.通用工具.字符串.本地化.容器.迭代器.通用算法.数值算法和I/O. 头文件组成:    C++ ...

  3. 走进C标准库(8)——"string.h"中函数的实现相关字符串操作函数

    我的strcat: char *strcat(char *dest,char *src) { char * reval = dest; while(*dest) dest++; while(*src) ...

  4. C++标准库之String

    C++中支持的字符串处理的函数库叫String,但它不是STL,却与STL操作十分相似. 1.声明: 使用String之前要有以下头文件 #include<string> using na ...

  5. 走进C标准库(6)——"string.h"中函数的实现memchr

    我写的memchr: void *memchr(const void *buf, char ch, unsigned count){ unsigned ; while(*(buf++) != ch & ...

  6. Python3标准库:string通用字符串操作

    1. string:通用字符串操作 string模块在很早的Python版本中就有了.以前这个模块中提供的很多函数已经移植为str对象的方法,不过这个模块仍保留了很多有用的常量和类来处理str对象. ...

  7. C++标准库之string返回值研究

    先说结论(不一定适用所有环境): 1) GCC默认开启了返回值优化(RVO),除非编译时指定“-fno-elide-constructors”: 2) 现代C++编译器一般都支持返回值优化: 3) s ...

  8. 基于标准库实现string和wstring的转换

    // convert string to wstring std::wstring to_wstring(const std::string& str, const std::locale&a ...

  9. 基于标准库的string类实现简单的字符串替换

    感觉基本功还是不扎实,虽然能做些程序但是现在看来我还是个初学者(primer),试着完成习题结果还得修修改改. 废话不多说,实现功能很简单,<C++ Primer>9.5.2节习题. // ...

随机推荐

  1. [TimLinux] Python nonlocal和global的作用

    1. 执行代码 以下实例都是通过执行以下代码,需要把以下执行代码放在后面实例代码的后面. a = outer_func()print("call a()") a() a() a() ...

  2. HDU 6118 度度熊的交易计划(网络流-最小费用最大流)

    度度熊参与了喵哈哈村的商业大会,但是这次商业大会遇到了一个难题: 喵哈哈村以及周围的村庄可以看做是一共由n个片区,m条公路组成的地区. 由于生产能力的区别,第i个片区能够花费a[i]元生产1个商品,但 ...

  3. 洛谷 题解 P1025 【数的划分】

    将n个小球放到k个盒子中的情况总数 = (a)至少有一个盒子只有一个小球的情况数 + (b)没有一个盒子只有一个小球的情况数 这样写出表达式: a.因为盒子不加区分,那么=情况数与"将n-1 ...

  4. Grafana基础

    一.Grafana基础 Grafana是一个开源的指标量监测和可视化工具.官方网站为:https://grafana.com/, 常用于展示基础设施的时序数据和应用程序运行分析.Grafana的das ...

  5. springboot中的pom文件是如何管理依赖的

    我们来看一下新建完成后的springboot中的pom文件 <?xml version="1.0" encoding="UTF-8"?> <p ...

  6. .Net Core 3.0 以及其前版本编写自定义主机,以允许本机程式(转载)

    像所有的托管代码一样,.NET Core 应用程序也由主机执行. 主机负责启动运行时(包括 JIT 和垃圾回收器等组件)和调用托管的入口点. 托管 .NET Core 运行时是高级方案,在大多数情况下 ...

  7. Nginx(四)-- Nginx的扩展-OpenRestry

    1. OpenResty 安装及使用 OpenResty 是一个通过 Lua 扩展 Nginx 实现的可伸缩的 Web 平台,内部集成了大量精良的 Lua 库.第三方模块以及大多数的依赖项.用于方便地 ...

  8. windows系统的python开发环境的搭建

    step1:  访问python官方网站下载python安装包 https://www.python.org/downloads/windows/ 下载自己想要的版本 勾上Add Python XX ...

  9. 延迟队列DelayQueue take() 源码分析

    延迟队列DelayQueue take() 源码分析 在工作中使用了延迟队列,对其内部的实现很好奇,于是就研究了一下其运行原理,在这里就介绍一下take()方法的源码 1 take()源码 如下所示 ...

  10. django----orm查询优化 MTV与MVC模型 choice参数 ajax serializers

    目录 orm查询优化 only defer select_related 与 prefetch_related MTV 与 MVC 模型 choice参数 Ajax 前端代码 后端代码 前后端传输数据 ...