string基本字符序列容器(竞赛时常用的使用方法总结)

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

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

  1 //关于C++ STL string基本字符系列容器的学习,看别人的代码一百遍,不如自己动手写一遍。
  2 #include <string>
  3 #include <vector>
  4 #include <iostream>
  5 #include <algorithm>
  6 using namespace std;
  7
  8 int main()
  9 {
 10     /*创建string对象 string 加 对象名*/
 11     string s;
 12     cout<<s.length()<<endl;
 13     /*运行结果
 14     0
 15     */
 16
 17     /*给string对象赋值一般有两种方式*/
 18     s="hello,C++STL.";//直接赋值
 19     //更长用的方法是把一个字符指针赋给一个字符串对象
 20     char ss[]="abcd";//scanf("%s",ss);  //注意使用scanf输入,此处直接赋值
 21     s="";//清空字符串
 22     if(s.empty()) cout<<"该字符串为空\n";
 23     s=ss;//把整个字符数组赋给string对象
 24     cout<<"赋值后为:"<<s<<endl;
 25     /*运行结果
 26     该字符串为空
 27     赋值后为:abcd
 28     */
 29
 30     /*string对象和字符数组互操作*/
 31     printf(s.c_str());cout<<endl;//用printf输出字符串对象,要采用c_str()方法
 32     printf("%s\n",ss);
 33     cout<<s<<endl;//输出字符串对象
 34     cout<<ss<<endl;//直接使用cout输出字符串数组
 35     /*运行结果
 36     abcd
 37     abcd
 38     abcd
 39     abcd
 40     */
 41
 42     s="hello,C++STL.";//重新直接赋值
 43
 44     /*在string尾部添加字符或者字符串*/
 45     //要想在string对象尾部添加字符
 46     s += ‘a‘;
 47     cout<<s<<endl;
 48     //同样要想在string对象尾部添加字符串
 49     s += "bc";
 50     cout<<s<<endl;
 51     //也可以使用append()方法
 52     s.append("edg");
 53     cout<<s<<endl;
 54     /*运行结果
 55     hello,C++STL.a
 56     hello,C++STL.abc
 57     hello,C++STL.abcedg
 58     */
 59
 60     /*给string对象添加字符,可以使用insert()方法把一个字符插入到迭代器位置之前*/
 61     //定义迭代器
 62     string::iterator it1;
 63     it1=s.begin();
 64     //把字符插入到第2个字符之前,注意字符位置从0开始计数
 65     s.insert(it1+2,‘h‘);
 66     cout<<s<<endl;
 67     /*运行结果
 68     hehllo,C++STL.abcedg
 69     */
 70
 71     /*访问string对象元素时一般使用下标方式随机访问string对象的元素*/
 72     int i;
 73     for(i=0;i< s.length();i++){//其中length()方法计算字符串的长度
 74         cout<<s[i]<<‘ ‘;
 75     }
 76     cout<<endl;
 77     /*运行结果
 78     h e h l l o , C + + S T L . a b c e d g
 79     */
 80
 81     /*删除string对象的元素*/
 82     //清空一个字符串对象直接给他赋一个空字符串即可,即s="";
 83     //要向删除迭代器所指的那个元素或者一个区间中的所有元素时,使用erase()方法
 84     string::iterator it2=s.begin();//定义迭代器变量,指向字符串对象首元素
 85     s.erase(it2+2);//删除第2个元素,元素位置从0开始计数
 86     cout<<s<<endl;
 87
 88     s.erase(it2+13,it2+19);//删除第13到第18,区间删除时有区间多加一个单位
 89     cout<<s<<endl;
 90     /*运行结果
 91     hello,C++STL.abcedg
 92     hello,C++STL.
 93     */
 94
 95     /*要想替换string对象的字符,则使用replace()方法*/
 96     //从第0个开始,将连续的5个字符替换为"good",即"hello"替换为"good"
 97     s.replace(0,5,"good");
 98     cout<<s<<endl;
 99     /*运行结果
100     good,C++STL.
101     */
102
103     /*要想搜索string对象的元素或子串,则采用find()方法,找到返回下标值,找不到的话,在DEV-C++5.9.2中返回18446744073709551615*/
104     //查找字符‘C‘
105     cout<<s.find(‘C‘)<<endl;
106     //查找字符串"C++"
107     cout<<s.find("C++")<<endl;
108     //查找字符串"hello"
109     cout<<s.find("hello")<<endl;
110     /*运行结果
111     5
112     5
113     18446744073709551615
114     */
115
116     /*string对象的比较*/
117     cout<<s.compare("z")<<endl;//s比"good"字符串小,返回-1
118     cout<<s.compare("good,C++STL.")<<endl;//s与"good"字符串相同,返回0
119     cout<<s.compare("a")<<endl;//s比"good"字符串大,返回1
120     /*运行结果
121     -1
122     0
123     1
124     */
125
126     /*要想将string对象中一段区间中的元素反向排序,则采用reverse()算法,注意加上头文件algorithm*/
127     cout<<"s反向前:\n";
128     cout<<s<<endl;
129     reverse(s.begin(),s.end());
130     cout<<"s反向后:\n";
131     cout<<s<<endl;
132     /*运行结果
133     s反向前:
134     good,C++STL.
135     s反向后:
136     .LTS++C,doog
137     */
138
139     /*处理二维字符串数组时可将string基本字符序列容器作为vector的元素,从而看作vector向量容器来处理,只不过是元素是string对象*/
140     vector<string> v;
141     v.push_back("Jack");
142     v.push_back("Mike");
143     v.push_back("Tom");
144
145     cout<<v[0]<<endl;
146     cout<<v[1]<<endl;
147     cout<<v[2]<<endl;
148     cout<<v[0][0]<<endl;
149     cout<<v[1][0]<<endl;
150     cout<<v[2][0]<<endl;
151     cout<<v[2].length()<<endl;
152     /*运行结果
153     Jack
154     Mike
155     Tom
156     J
157     M
158     T
159     3
160     */
161     return 0;
162 } 

原文地址:https://www.cnblogs.com/wenzhixin/p/8505270.html

时间: 2024-11-07 03:01:39

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

第17章 string基本字符序列容器

/* 第17章 string基本字符序列容器 17.1 string技术原理 17.2 string应用基础 17.3 本章小结 */ // 第17章 string基本字符序列容器 // 17.1 string技术原理 -------------------------------------------------------------------------------------- // 17.2 string应用基础 ----------------------------------

string基本字符序列容器

C语言每天提供专门的字符串类型,需要通过字符数组才能对字符串进行存储和处理.在标准C++中,字符串类由C++ STL实现.string是一个基于字符的序列容器,具有vector向量一样的内部线性结构,字符逐一写入容器,最后以null字符结尾.跟传统的char*字符数组相比,string提供了丰富的函数用于字符的添加.删除.替换.查找和比较等. 创建string对象 主要有以下几种方式. (1)    string() string s; (2)    string(conststring&s,s

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

string基本字符系列容器 C语言只提供了一个插入类型用来处理字符, 而对于字符串, 只能通过字符串数组来处理, 显得十分不便. C++STL提供了string基本字符系列容器来处理字符串, 可以把string理解为字符串类, 它提供了添加, 删除, 替换, 查找和比较等丰富的方法. 虽然使用vector<char>这样的向量也可以处理字符串, 但功能比不上string. 向量的元素类型可以是string, 如vector<string>这样的向量, 实际上就类似于C语言中的字符

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

由于C语言中只提供了一个char类型用来处理字符,对于字符串的处理,我们往往都是通过字符数组来处理的,这有些时候还是很不方便的. 其实vector<char>就和char类型的数组很像,vector<string>就是字符串类型的数组了. 1.1 创建一个string类型的对象 下面的代码创建了一个字符串对象s,且s是一个空串,他的长度是0, 对于string来说,可以同时用s.length()和s.size()来求长度 # include<iostream> # in

string基本字符系列容器

今天学了关于string的一些基本字符容器,下面我就摘要几种. 一.用reverse反向排序string对象(要用#include<algorithm>头文件) 1 #include<iostream> 2 #include<string> 3 #include<algorithm> 4 using namespace std; 5 int main() 6 { 7 string s; 8 cin>>s; 9 reverse(s.begin(),

Java的——String类、StringBuffer和StringBuilder、不可变和可变字符序列使用陷阱

Java的知识点21--String类.StringBuffer和StringBuilder.不可变和可变字符序列使用陷阱 原文链接 https://blog.csdn.net/qq_39368007/article/details/84033272 String类 String 类对象代表不可变的Unicode字符序列,因此我们可以将String对象称为"不可变对象" substring()是对字符串的截取操作,但本质是读取原字符串内容生成了新的字符串. String测试代码 pac

JAVA基础 String包装类下 .replace方法的使用以及char和字符序列的使用场景

ptLink0.setText(arbu.getPtLink().replace("&","&")); // 如果像 '&','&' 这样替换是不行的,因为 '' 是给char用的,要替换字符序列的话,需要用 "" .replace连用用来替换多个char字符或者字符序列(String): // 在读取的时候,解析器会自动将其转换回"&","<","&

字符串中字符的个数和字符序列

题目 输出上次字符串中字符的个数和字符 最终的序列如下: 1, 11, 21, 1211, 111221, ... n=1时,输出字符串"1" n=2时,输出上次字符串中字符的个数和字符,因为上次字符串有1个1,所以输出11 n=3时,由于上次字符是11,有2个1,所以输出21 n=4时,由于上次字符串是21,有1个2和1个1,所以输出1211 依次类推,写个countAndSay(n)函数返回字符串. 参考代码 class Solution { public: string getN

Linux工具开发---2编程实现对输入字符序列变换(编码/加密/散列)方式的智能判定

如何简单实现一个可以智能判定输入字符序列变换方式的小程序 本文由CSDN-蚍蜉撼青松 [主页:http://blog.csdn.net/howeverpf]原创,转载请注明出处! 问题描述: 在分析网络数据包或者研究安全问题时,经常会遇到变换后的字符序列.而能否准确识别密文的变换算法,对进一步的分析工作很关键.常用的变换算法包括但不限于:Base64.URL编码.HTML编码.MD5散列.DES加密.RSA加密等.要求: 1)在理解算法原理及密文特点的基础上,使用任意编程语言实现,当输入一段密文