1、String的常用用法

  在C语言中,使用字符数组char str[]来存字符串,字符数组操作比较麻烦,而且容易有'\0'的问题,C++在STL中加入string类型,对字符串常用的需求功能进行封装。

  使用string,必须要加头文件#include<string>和using namespace std;

注意:#include<string>和#include<string.h>的区别,#inlcude<string.h>是包含了字符串常用的函数,比如strcat,strcmp。#include<string.h>和#include<cstring>等价。

  1.1、string的定义

  定义string的方式和基本类型定义相同。

string str;
string str="abcd";

  1.2、string中的内容访问

  和vector一样,有两种方式:下标访问,迭代器访问

    1.2.1、下标访问

    可以如同字符数组一样去访问string

    1.2.2、迭代器访问

    string的迭代器不需要参数,直接定义string::iterator it;

#include<stdio.h>
#include<string> using namespace std; int main()
{
string str="abcd";
for(int i=;i<str.length;i++)
{
printf("%c ",str[i]);//a b c d
} //通过迭代器访问string内容
for(string::iterator it=str.begin();it!=str.end();it++)
{
pritnf("%c ",*it);
} return ;

  1.3、string常用函数

    1.3.1、+,+=,字符串拼接
    1.3.2、==,!=,<,<=,>=,>比较大小
    1.3.3、length()/size(),字符串长度
    1.3.4、insert()
    1.3.5、erase()
    1.3.6、clear()
    1.3.7、substr()
    1.3.8、replace()
#include<stdio.h>
#include<string> using namespace std; int main()
{
string str="abcd";
for(int i=;i<str.length;i++)
{
printf("%c ",str[i]);//a b c d
} //通过迭代器访问string内容
for(string::iterator it=str.begin();it!=str.end();it++)
{
pritnf("%c ",*it);
}
string str1="xyz";
string str2=str+str1;
cout<<str2<<endl;//abcdxyz
if(str<str1)printf("OK\n");//字符串比较,首先比较长度,长度相同的进行字典序比较。
printf("%d %d\n",str.lenght(),str.size());//4,4//获取字符串的长度,大小
cout<<str.insert(,str1)<<endl;//往str[3]处插入xyz,输出abcxyzd;
str.insert(str.begin()+,str.begin(),str.end);
str.substr(,);//substr(pos,len),从0开始,长度为3的子串
return ;
}
    1.3.9、string::npos

    string::npos是一个常数,本身值为-1,用来做find函数失配的返回值。

    1.3.10、find()   
#include<stdio.h>
#include<string> using namespace std; int main()
{
string str="abcd";
string str1="bc";
if(str.find(str1)!=string::npos)
{
cout<<str.find(str1)<<endl;
}
if(str.find(str2,)!=string::npos)
{
cout<<str.find(str2,)<<endl;
}
else
{
cout<<"No Find"<<endl;
}
return ;
}

2018-09-25 16:15:15

@author:Foreordination  

C++标准模板库(STL)之String的更多相关文章

  1. 标准模板库(STL)学习探究之stack

    标准模板库(STL)学习探究之stack queue priority_queue list map/multimap dequeue string

  2. C++的标准模板库STL中实现的数据结构之链表std::list的分析与使用

    摘要 本文主要借助对C++的标准模板库STL中实现的数据结构的学习和使用来加深对数据结构的理解,即联系数据结构的理论分析和详细的应用实现(STL),本文是系列总结的第二篇.主要针对线性表中的链表 ST ...

  3. 标准模板库(STL)学习探究之vector容器

    标准模板库(STL)学习探究之vector容器  C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被 ...

  4. C++ 标准模板库(STL)

    C++ 标准模板库(STL)C++ STL (Standard Template Library标准模板库) 是通用类模板和算法的集合,它提供给程序员一些标准的数据结构的实现如 queues(队列), ...

  5. STL学习系列之一——标准模板库STL介绍

    库是一系列程序组件的集合,他们可以在不同的程序中重复使用.C++语言按照传统的习惯,提供了由各种各样的函数组成的库,用于完成诸如输入/输出.数学计算等功能. 1. STL介绍 标准模板库STL是当今每 ...

  6. 标准模板库--STL

    标准模板库STL 1.泛型程序设计 C++ 语言的核心优势之一就是便于软件的重用 C++中有两个方面体现重用: 1.面向对象的思想:继承和多态,标准类库 2.泛型程序设计(generic progra ...

  7. C++的标准模板库STL中实现的数据结构之顺序表vector的分析与使用

    摘要 本文主要借助对C++的标准模板库STL中实现的数据结构的学习和使用来加深对数据结构的理解.即联系数据结构的理论分析和详细的应用实现(STL),本文是系列总结的第一篇,主要针对线性表中的顺序表(动 ...

  8. 实验8 标准模板库STL

    一.实验目的与要求: 了解标准模板库STL中的容器.迭代器.函数对象和算法等基本概念. 掌握STL,并能应用STL解决实际问题. 二.实验过程: 完成实验8标准模板库STL中练习题,见:http:// ...

  9. C++ 标准模板库STL 队列 queue 使用方法与应用介绍

    C++ 标准模板库STL 队列 queue 使用方法与应用介绍 queue queue模板类的定义在<queue>头文件中. 与stack模板类很相似,queue模板类也需要两个模板参数, ...

  10. 【c++】标准模板库STL入门简介与常见用法

    一.STL简介 1.什么是STL STL(Standard Template Library)标准模板库,主要由容器.迭代器.算法.函数对象.内存分配器和适配器六大部分组成.STL已是标准C++的一部 ...

随机推荐

  1. 使用jconsole监控JVM内存

    首先声明:此篇博文分析的是JDK1.8. JVM内存区域总体分两类:heap区和非heap区.Jconsole中对内存划分为同样的结构,如下: heap区又分为:  - Eden Space(伊甸园) ...

  2. Python 嘉宾列表问题

    某书上的练习题,当作复习8 #3-5 修改嘉宾名单 def alter(someone, other): if someone in din_list: din_list.remove(someone ...

  3. mysql索引类型(按存储结构划分)

    关于mysql索引类型,网上有很多相关的介绍,给人的感觉很乱.鄙人在翻阅相关书籍后,特意梳理了一下.哪里有不对的地方,欢迎指正! 1. B-Tree索引 它使用B-Tree数据结构来存储数据,实际上很 ...

  4. OO第一单元优化博客

    OO第一单元优化博客 第一次作业: 合并同类项+提正系数项+优化系数指数0/1=满分 第二次作业: 初始想法 一开始是想以\(sin(x)​\)和\(cos(x)​\)的指数作为坐标,在图上画出来就可 ...

  5. [转]SQL中 OVER(PARTITION BY) 取上一条,下一条等

    OVER(PARTITION BY)函数介绍 开窗函数               Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返 ...

  6. 1.2:Properties

    文章著作权归作者所有.转载请联系作者,并在文中注明出处,给出原文链接. 本系列原更新于作者的github博客,这里给出链接. 上一节我们了解了一个Shader的基本结构,这一节,我们从 Propert ...

  7. linux 安装软件三种方法

    引言 在ubuntu当中,安装应用程序我所知道的有三种方法,分别是apt-get,dpkg安装deb和make install安装源码包三种.下面针对每一种方法各举例来说明. apt-get方法 使用 ...

  8. flutter -icons

    icon 合集 https://material.io/tools/icons/?icon=account_balance&style=baseline

  9. MapReduce编程模型简介和总结

    MapReduce应用广泛的原因之一就是其易用性,提供了一个高度抽象化而变得非常简单的编程模型,它是在总结大量应用的共同特点的基础上抽象出来的分布式计算框架,在其编程模型中,任务可以被分解成相互独立的 ...

  10. FIT2096 Assignment 2 2019

    FIT2096 Assignment 2 2019_v1.2.docx 9/04/2019 11:34 AMPage 1 | 4FIT2096 Assignment 2 2019Transformat ...