C语言只提供了一个char类型用来处理字符,而对于字符串,只能通过字符串数组来处理,而C++STL提供了string基本字符序列容器来处理字符串,可以将其理解为字符串类,它提供了添加,删除,替换、查找和比较等丰富、简洁的方法。

下面是在编写代码是的具体应用。

 //关于C++ STL string基本字符系列容器的学习,看别人的代码一百遍,不如自己动手写一遍。
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std; int main()
{
/*创建string对象 string 加 对象名*/
string s;
cout<<s.length()<<endl;
/*运行结果
0
*/ /*给string对象赋值一般有两种方式*/
s="hello,C++STL.";//直接赋值
//更长用的方法是把一个字符指针赋给一个字符串对象
char ss[]="abcd";//scanf("%s",ss); //注意使用scanf输入,此处直接赋值
s="";//清空字符串
if(s.empty()) cout<<"该字符串为空\n";
s=ss;//把整个字符数组赋给string对象
cout<<"赋值后为:"<<s<<endl;
/*运行结果
该字符串为空
赋值后为:abcd
*/ /*string对象和字符数组互操作*/
printf(s.c_str());cout<<endl;//用printf输出字符串对象,要采用c_str()方法
printf("%s\n",ss);
cout<<s<<endl;//输出字符串对象
cout<<ss<<endl;//直接使用cout输出字符串数组
/*运行结果
abcd
abcd
abcd
abcd
*/ s="hello,C++STL.";//重新直接赋值 /*在string尾部添加字符或者字符串*/
//要想在string对象尾部添加字符
s += 'a';
cout<<s<<endl;
//同样要想在string对象尾部添加字符串
s += "bc";
cout<<s<<endl;
//也可以使用append()方法
s.append("edg");
cout<<s<<endl;
/*运行结果
hello,C++STL.a
hello,C++STL.abc
hello,C++STL.abcedg
*/ /*给string对象添加字符,可以使用insert()方法把一个字符插入到迭代器位置之前*/
//定义迭代器
string::iterator it1;
it1=s.begin();
//把字符插入到第2个字符之前,注意字符位置从0开始计数
s.insert(it1+,'h');
cout<<s<<endl;
/*运行结果
hehllo,C++STL.abcedg
*/ /*访问string对象元素时一般使用下标方式随机访问string对象的元素*/
int i;
for(i=;i< s.length();i++){//其中length()方法计算字符串的长度
cout<<s[i]<<' ';
}
cout<<endl;
/*运行结果
h e h l l o , C + + S T L . a b c e d g
*/ /*删除string对象的元素*/
//清空一个字符串对象直接给他赋一个空字符串即可,即s="";
//要向删除迭代器所指的那个元素或者一个区间中的所有元素时,使用erase()方法
string::iterator it2=s.begin();//定义迭代器变量,指向字符串对象首元素
s.erase(it2+);//删除第2个元素,元素位置从0开始计数
cout<<s<<endl; s.erase(it2+,it2+);//删除第13到第18,区间删除时有区间多加一个单位
cout<<s<<endl;
/*运行结果
hello,C++STL.abcedg
hello,C++STL.
*/ /*要想替换string对象的字符,则使用replace()方法*/
//从第0个开始,将连续的5个字符替换为"good",即"hello"替换为"good"
s.replace(,,"good");
cout<<s<<endl;
/*运行结果
good,C++STL.
*/ /*要想搜索string对象的元素或子串,则采用find()方法,找到返回下标值,找不到的话,在DEV-C++5.9.2中返回18446744073709551615*/
//查找字符'C'
cout<<s.find('C')<<endl;
//查找字符串"C++"
cout<<s.find("C++")<<endl;
//查找字符串"hello"
cout<<s.find("hello")<<endl;
/*运行结果
5
5
18446744073709551615
*/ /*string对象的比较*/
cout<<s.compare("z")<<endl;//s比"good"字符串小,返回-1
cout<<s.compare("good,C++STL.")<<endl;//s与"good"字符串相同,返回0
cout<<s.compare("a")<<endl;//s比"good"字符串大,返回1
/*运行结果
-1
0
1
*/ /*要想将string对象中一段区间中的元素反向排序,则采用reverse()算法,注意加上头文件algorithm*/
cout<<"s反向前:\n";
cout<<s<<endl;
reverse(s.begin(),s.end());
cout<<"s反向后:\n";
cout<<s<<endl;
/*运行结果
s反向前:
good,C++STL.
s反向后:
.LTS++C,doog
*/ /*处理二维字符串数组时可将string基本字符序列容器作为vector的元素,从而看作vector向量容器来处理,只不过是元素是string对象*/
vector<string> v;
v.push_back("Jack");
v.push_back("Mike");
v.push_back("Tom"); cout<<v[]<<endl;
cout<<v[]<<endl;
cout<<v[]<<endl;
cout<<v[][]<<endl;
cout<<v[][]<<endl;
cout<<v[][]<<endl;
cout<<v[].length()<<endl;
/*运行结果
Jack
Mike
Tom
J
M
T
3
*/
return ;
}

string基本字符序列容器(竞赛时常用的使用方法总结)的更多相关文章

  1. string基本字符系列容器(一)

    C++STL提供了string基本字符系列容器来处理字符串,可以把string理解成字符串类,它提供了添加,删除,替换,查找和比较等丰富的方法. 使用string容器,需要头文件包含声明#includ ...

  2. C++之string基本字符系列容器

    string基本字符系列容器 C语言只提供了一个插入类型用来处理字符, 而对于字符串, 只能通过字符串数组来处理, 显得十分不便. C++STL提供了string基本字符系列容器来处理字符串, 可以把 ...

  3. string基本字符系列容器(二)

    string对象作为vector元素 string对象可以作为vector向量元素,这种用法类似字符串数组. #include<string> #include<vector> ...

  4. vector向量容器(常用的使用方法总结)

    关于STL中vector容器的学习,编译运行后边看代码,边看执行结果效果更佳,还是想说看别人的代码一百遍,不如自己动手写一遍. vector向量容器不但能像数组一样对元素进行随机访问,还能随时在尾部插 ...

  5. JAVA基础 XML生成与解析和String包装类下 .replace方法的使用以及char和字符序列的使用场景

    ptLink0.setText(arbu.getPtLink().replace("&","&")); // 如果像 '&','& ...

  6. STL常用序列容器

    这里简要的记述一下STL常用容器的实现原理,要点等内容. vector vector是比较常用的stl容器,用法与数组是非类似,其内部实现是连续空间分配,与数组的不同之处在于可弹性增加空间,而arra ...

  7. java刷题时常用容器详解

    当初学java时,只是简单的把java基础知识过了一遍就跑去刷题了,很多知识都是在刷题的过程中慢慢加深理解的. 由于每次刷题时,刷到与容器有关的我基本上都跑去百度了,例如百度一下:java中List的 ...

  8. Java 常用类——StringBuffer&StringBuilder【可变字符序列】

    一.字符串拼接问题 由于 String 类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象. Demo: 1 public class StringDemo { 2 pub ...

  9. MOOC python笔记(三) 序列容器:字符串、列表、元组

    容器概念 容器是Python中的重要概念,分为有序与无序. 有序容器也称为序列类型容器,如:字符串.列表. 通用序列容器操作 容器连接+ 加号可以把两个序列连接成一个更大的容器,相加后两个序列的值并不 ...

随机推荐

  1. poj 3264 区间最大最小值 RMQ问题之Sparse_Table算法

    Balanced Lineup Time Limit: 5000 MS Memory Limit: 0 KB 64-bit integer IO format: %I64d , %I64u Java ...

  2. 雪花算法(snowflake)delphi版

    雪花算法简单描述: + 最高位是符号位,始终为0,不可用. + 41位的时间序列,精确到毫秒级,41位的长度可以使用69年.时间位还有一个很重要的作用是可以根据时间进行排序. + 10位的机器标识,1 ...

  3. Android-Kotlin-接口与多态的表现

    上一篇博客介绍了 Android-Kotlin-抽象类与多态的表现 :, 而这一篇博客专门介绍下 接口与多态的表现 选择包名,然后右键: 选择Class类型,会有class:  选择File类型,不会 ...

  4. Excel VBA语句集

    Excel VBA语句集 引子 最近批阅学生成绩,用Excel 处理学生成绩,用到VBA 提高办公效率.需要经常查阅VBA的一些用法 正文 定制模块行为 (1) Option Explicit '强制 ...

  5. [ZJOI2010]基站选址(线段树优化dp)

    坑待填. \(Code\ Below:\) #include <bits/stdc++.h> #define lson (rt<<1) #define rson (rt< ...

  6. SQL 将一列多行数据合并为一行

    原表数据: 期望结果: 使用STUFF + FOR XML PATH即可实现以上效果 执行以下SQL: , , '') AS Course FROM Student AS T 可以看到输出结果与期望结 ...

  7. Django-cookie的保存以及删除操作

    Django里的保存cookie和flask是有区别的 今天我就说以下Django里的cookie操作 #先导包 #导入Django模块 from django.http import HttpRes ...

  8. alembic教程

    安装 pip install alembic 步骤 1.初始化 alembic 仓库 在终端中, cd 到你的项目目录中,然后执行命令 alembic init alembic ,创建一个名叫 ale ...

  9. Docker 镜像安装 GitLab 中文社区版

    docker run \ --detach \ --publish : \ --publish : \ --name gitlab \ --restart unless-stopped \ --vol ...

  10. opencv实现正交匹配追踪算法OMP

    //dic: 字典矩阵: //signal :待重构信号(一次只能重构一个信号,即一个向量) //min_residual: 最小残差 //sparsity:稀疏度 //coe:重构系数 //atom ...