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中的重要概念,分为有序与无序. 有序容器也称为序列类型容器,如:字符串.列表. 通用序列容器操作 容器连接+ 加号可以把两个序列连接成一个更大的容器,相加后两个序列的值并不 ...
随机推荐
- [php] php - json_encode 函数
json_encode()函数, $arr= array("key"=>null); echo json_encode($arr);{"key":null ...
- MySQL--REPALCE INTO操作
REPLACE INTO语法是MySQL数据库独特的扩展语法,可以提供“不存在即插入,存在即更新”的操作,MySQL官方文档解析其算法为: 1.尝试进行INSER 操作 2.如果INSERT 失败,则 ...
- 统计--VARCHAR与NVARCHAR在统计预估上的区别
最近遇到一个问题,当查询使用到模糊查询时,由于预估返回行数过高,执行计划认为索引查找+Key Lookup的成本过高,因此采用Clustered Index Scan的方式,消耗大量逻辑IO,执行计划 ...
- bootstrap基础学习小记(一)简介模板、全局样式
2011年,twitter的“一小撮”工程师为了提高他们内部的分析和管理能力,用业余时间为他们的产品构建了一套易用.优雅.灵活.可扩展的前端工具集--BootStrap.Bootstrap由MARK ...
- Java内存模型与共享变量可见性
此文已由作者赵计刚授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 注:本文主要参考自<深入理解Java虚拟机(第二版)>和<深入理解Java内存模型> ...
- 小猴打架(luogu4430)(数论+生成树计数)
一开始森林里面有\(N\)只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友.每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友.经过\(N-1\)次打架之后,整个森林的小猴 ...
- solr 5.5使用 和pyg里 的4.10.3版 部署到tomcat中不一样(不使用内置jetty)
http://www.cnblogs.com/zhuxiaojie/p/5764680.html
- centos7 安装cmake
安装cmake之前,记得升级gcc,请参考centos7 升级GCC版本到7.3.0 #shell 太简单,懒得解释 wget https://cmake.org/files/v3.11/cmake- ...
- 将Python项目打包成EXE可执行文件(单文件,多文件,包含图片)
解决 将Python项目打包成EXE可执行文件(单文件,多文件,包含图片) 1.当我们写了一个Python的项目时,特别是一个GUI项目,我们特备希望它能成为一个在Windows系统可执行的EXE文件 ...
- electron打包成桌面应用程序的详细介绍
1.前提条件 a. 安装了node b.安装了electron c.你知道自己写的东西(js,css,html等等)放在那个文件夹(假设这个文件夹命名为 app,下面会用到)中 2.安装electro ...