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. jdbc的配置(更新中)

    MySQL的 JDBC URL 格式 for  Connector/J 如下例: 格式如下: jdbc:mysql://[host][,failoverhost...][:port]/[databas ...

  2. HDU 4920 矩阵乘积 优化

    Matrix multiplication Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/ ...

  3. cxgrid动态多表头

    function TForm15.CreateBand(View: TcxGridDBBandedTableView;  BandCaption, ParentBandCaption: String) ...

  4. 实验6 LCD接口

    1.利用单片机控制LCD1602,在LCD1602上显示字符串,并使其整屏左移. #include<reg51.h> #define uchar unsigned char #define ...

  5. WinForm POST上传与后台接收

    前端 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using ...

  6. 阿里云oss服务通用类

    在webconfig中配置信息 <?xml version="1.0" encoding="utf-8"?><configuration> ...

  7. Python3.5学习十八 Python之Web框架 Django

    Python之Web框架: 本质:Socket 引用wsgiref创建web框架 根据web框架创建过程优化所得: 分目录管理 模板单独目录 执行不同函数单独存入一个方法py文件 Web框架的两种形式 ...

  8. Python MySQL - 进行数据查询

    #coding=utf-8 import mysql.connector import importlib import sys # reload(sys) # sys.setdefaultencod ...

  9. Mysql root账号general_log_file方法获取webshell

    在前面的phpmyadmin漏洞利用专题中介绍了如何通过root账号来获取webshell,但在现实情况中,由于Mysql版本较高以及配置文件的缘故,往往无法直接通过root账号写入网站真实路劲下获取 ...

  10. 使用IEDA远程调试

    下面演示在docker中调试代码. 使用vulhub作为演示. 下载vulhub,进入vulhub/fastjson/vuln/ 编辑docker-compose.yml ,在最后新建一行加入  - ...