string基本字符序列容器(竞赛时常用的使用方法总结)
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基本字符序列容器(竞赛时常用的使用方法总结)的更多相关文章
- string基本字符系列容器(一)
C++STL提供了string基本字符系列容器来处理字符串,可以把string理解成字符串类,它提供了添加,删除,替换,查找和比较等丰富的方法. 使用string容器,需要头文件包含声明#includ ...
- C++之string基本字符系列容器
string基本字符系列容器 C语言只提供了一个插入类型用来处理字符, 而对于字符串, 只能通过字符串数组来处理, 显得十分不便. C++STL提供了string基本字符系列容器来处理字符串, 可以把 ...
- string基本字符系列容器(二)
string对象作为vector元素 string对象可以作为vector向量元素,这种用法类似字符串数组. #include<string> #include<vector> ...
- vector向量容器(常用的使用方法总结)
关于STL中vector容器的学习,编译运行后边看代码,边看执行结果效果更佳,还是想说看别人的代码一百遍,不如自己动手写一遍. vector向量容器不但能像数组一样对元素进行随机访问,还能随时在尾部插 ...
- JAVA基础 XML生成与解析和String包装类下 .replace方法的使用以及char和字符序列的使用场景
ptLink0.setText(arbu.getPtLink().replace("&","&")); // 如果像 '&','& ...
- STL常用序列容器
这里简要的记述一下STL常用容器的实现原理,要点等内容. vector vector是比较常用的stl容器,用法与数组是非类似,其内部实现是连续空间分配,与数组的不同之处在于可弹性增加空间,而arra ...
- java刷题时常用容器详解
当初学java时,只是简单的把java基础知识过了一遍就跑去刷题了,很多知识都是在刷题的过程中慢慢加深理解的. 由于每次刷题时,刷到与容器有关的我基本上都跑去百度了,例如百度一下:java中List的 ...
- Java 常用类——StringBuffer&StringBuilder【可变字符序列】
一.字符串拼接问题 由于 String 类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象. Demo: 1 public class StringDemo { 2 pub ...
- MOOC python笔记(三) 序列容器:字符串、列表、元组
容器概念 容器是Python中的重要概念,分为有序与无序. 有序容器也称为序列类型容器,如:字符串.列表. 通用序列容器操作 容器连接+ 加号可以把两个序列连接成一个更大的容器,相加后两个序列的值并不 ...
随机推荐
- poj 3264 区间最大最小值 RMQ问题之Sparse_Table算法
Balanced Lineup Time Limit: 5000 MS Memory Limit: 0 KB 64-bit integer IO format: %I64d , %I64u Java ...
- 雪花算法(snowflake)delphi版
雪花算法简单描述: + 最高位是符号位,始终为0,不可用. + 41位的时间序列,精确到毫秒级,41位的长度可以使用69年.时间位还有一个很重要的作用是可以根据时间进行排序. + 10位的机器标识,1 ...
- Android-Kotlin-接口与多态的表现
上一篇博客介绍了 Android-Kotlin-抽象类与多态的表现 :, 而这一篇博客专门介绍下 接口与多态的表现 选择包名,然后右键: 选择Class类型,会有class: 选择File类型,不会 ...
- Excel VBA语句集
Excel VBA语句集 引子 最近批阅学生成绩,用Excel 处理学生成绩,用到VBA 提高办公效率.需要经常查阅VBA的一些用法 正文 定制模块行为 (1) Option Explicit '强制 ...
- [ZJOI2010]基站选址(线段树优化dp)
坑待填. \(Code\ Below:\) #include <bits/stdc++.h> #define lson (rt<<1) #define rson (rt< ...
- SQL 将一列多行数据合并为一行
原表数据: 期望结果: 使用STUFF + FOR XML PATH即可实现以上效果 执行以下SQL: , , '') AS Course FROM Student AS T 可以看到输出结果与期望结 ...
- Django-cookie的保存以及删除操作
Django里的保存cookie和flask是有区别的 今天我就说以下Django里的cookie操作 #先导包 #导入Django模块 from django.http import HttpRes ...
- alembic教程
安装 pip install alembic 步骤 1.初始化 alembic 仓库 在终端中, cd 到你的项目目录中,然后执行命令 alembic init alembic ,创建一个名叫 ale ...
- Docker 镜像安装 GitLab 中文社区版
docker run \ --detach \ --publish : \ --publish : \ --name gitlab \ --restart unless-stopped \ --vol ...
- opencv实现正交匹配追踪算法OMP
//dic: 字典矩阵: //signal :待重构信号(一次只能重构一个信号,即一个向量) //min_residual: 最小残差 //sparsity:稀疏度 //coe:重构系数 //atom ...