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中的重要概念,分为有序与无序. 有序容器也称为序列类型容器,如:字符串.列表. 通用序列容器操作 容器连接+ 加号可以把两个序列连接成一个更大的容器,相加后两个序列的值并不 ...
随机推荐
- html,css,jquery,JavaScript
1.全选 (当点击checkall按钮时,选中所有checkbox用prop全选上)function checkAll() { $(':checkbox').prop('checked', true) ...
- Swift3 使用系统UIAlertView方法做吐司效果
/** *显示弹出信息 */ class func showAlertMessage(_ str:String,showtime Num:Double){ let alert = UIAlertVie ...
- Java学习--数组的定义和使用
1. 数组分配了空间,未赋值 public class ArrayDemo01{ public static void main(String args[]){ int score[] = null ...
- URL SCAN简介
URL Scan简介 文/玄魂 目录 URL Scan简介 前言 1.1 安装 1.2 配置 修改 URLScan.ini 文件 配置 URLScan 用于依赖于 IIS 的应用程序 前言 Ur ...
- [leetcode.com]算法题目 - Maximum Subarray
Find the contiguous subarray within an array (containing at least one number) which has the largest ...
- [leetcode.com]算法题目 - Gray Code
The gray code is a binary numeral system where two successive values differ in only one bit. Given a ...
- Linux Shell脚本编程基础(11)
实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核,不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序.Shel编程语言具有普通编程 ...
- Linux高级文件系统管理(8)
如果您的 Linux 服务器有多个用户经常存取数据时,为了维护所有使用者在硬盘容量的公平使用,磁碟配额 (Quota) 就是一项非常有用的工具,另外,如果你的用户常常抱怨磁盘容量不够用,那么更进阶的文 ...
- Akka(42): Http:身份验证 - authentication, authorization and use of raw headers
当我们把Akka-http作为数据库数据交换工具时,数据是以Source[ROW,_]形式存放在Entity里的.很多时候除数据之外我们可能需要进行一些附加的信息传递如对数据的具体处理方式等.我们可以 ...
- Linux学习笔记-基本操作5
1. Linux文件操作相关函数 stat函数 :获取文件属性(从inode上获取) 返回值: 成功:0 ...