STL的简单应用(string)

前言

说到C++,我们不得不提起到的便是它便捷的标准模板库。标准模板库,即Standard Template Library,其简称为STL,它惠普实验室开发的一系列软件的统称。
从根本上说,STL是一些“容器”的集合,这些“容器”包括list,vector,set,map等一系列内容,STL也是算法和其他一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。STL的这种容器式的特点,奠定了其在C++编程过程中的重要地位,学好STL至关重要!
今天,我们将从多个方面来介绍C++中STL的简单应用,希望对你有所帮助!


在c语言中我们使用字符数组来存储字符串,到了C++时,我们用一种新的数据类型string来存储一段文字

一、string,C++的字符串类型

1、标准库的string类

首先,在使用string类时要包含头文件,即在开头要有
#include
其次,string表示可变长度的字符序列,字符串是其对象。c++中string类支持字符串对象的如下各种操作:
①各种初始化方式
②字符串之间的复制、比较、连接
③查询字符串长度和判断字符串是否为空
④访问字符串中的单个字符

以上这些功能,我们将用以下例题来逐一展示出来

#include <iostream>
#include <string>
using namespace std;
int main(){
string str1, str2; //创建两个空字符串对象
string str3 = "Hello, World!"; //创建str3,并初始化
string str4("I am ");//用定义对象的方法来定义
str2 = "Today"; //给str2赋值
str1 = str3 + " " + str4; //字符串连接运算
str1 += " 5 "; //末尾追加
cout << str1 + str2 + "!" <<endl; //输出字符串内容
cout <<"Length of str1 is :" << str1.size() << endl;
//输出一个字符串包含多少字符
for (int i = 0; i < str1.size(); ++i) //逐个输出s1中的字符
cout << str1[i] <<" ";			
}

下面我们以一张表来列出来字符串常用的操作
(重点,最好记忆!)
在这里插入图片描述

2、读写string对象

(1)使用标准库中iostream可以读写string对象

#include<iostream>	
#include<string>	
using namespace std;
int main(){
	string s;
	cin >> s;
	cout << s << endl;
	return 0;
}

注意:得到的字符串中不能包含空格,空格是最为分隔符来考虑的,需要特别注意一下。

当我们如果想给一个字符串输入多组数据时
(2)可以用循环读取未知数量的string对象

#include<iostream>	
#include<string>	
using namespace std;
int main(){
	string word;
    while(cin >> word && word!=#)//输入#时可以结束
    //输入操作符返回输入流对象,如果输入流对象处于有效状态,表示没有遇到文件结束或非法输入(Ctrl+z)
    cout << word << endl;	
}

当你想读包含空格的字符串时
(3)使用getline()函数
①两个参数:输入流对象和存放读入字符串的string对象
②从指定输入流中读取内容,遇到换行符(回车)为止;将所读内容存入指定的string对象中,流中的换行符被读取并丢弃
③返回参数输入流对象

#include<iostream>	
#include<string>	
using namespace std;
int main(){
	string line;
    while(getline(cin, line))
    cout << line << endl;	
}
3、判断stirng对象是否为空

①在这里,我们会使用empty()函数。empty()函数判断string对象是否为空,返回一个布尔值
②具体使用形式为:
stringObj.empty()
③具体操作如下

#include<iostream>	
#include<string>	
using namespace std;
int main(){
	string line;
    while(getline(cin, line))			
    if(!line.empty())		//line不为空时输出
    cout << line << endl;
    return 0;
}
4、获取string对象的长度

① size()函数返回string对象的长度,即对象中字符的个数
② 具体形式:
stringObj.size()
③常用的具体操作如下

#include <iostream>
#include <string>
using namespace std;
int main(){
	string str1="Hello, World!"
	cout <<"Length of str1 is :" << str1.size() << endl;
	//输出一个字符串包含多少字符
	for (int i = 0; i < str1.size(); ++i) //逐个输出s1中的字符
	cout << str1[i] <<" ";	
	string line;
	while(getline(cin, line))			
    {
    if(line.size() > 80)
    cout << line << endl;}//每次读取一行文本,输出长度超过80个字符的	
}
5、比较string对象

在C++中我们可以用关系运算符比较两个字符串对象:
(1)两个string相等意味着它们的长度相同,并且所包含的字符也完全相同
(2)字符串的大小关系依照字典顺序定义且区分大小写字母.

#include<iostream>	
#include<string>	
using namespace std;
int main(){
	string s1 = "hello";		
	string s2 = "hello world";	// s2 > s1
	string s3 = "Hello";		// s3 < s1, s3 < s2
}
6、string对象的赋值和连接

在C++中,允许把一个string对象的值赋给另一个string对象,
也可以为string对象赋一个字符串字面值常量

#include<iostream>	
#include<string>	
using namespace std;
int main(){
	string s1 = "hello", s2,s3;
    s2 = s1;
	s1 = "C++ Programming Language";
	s3 = s2 + " " + s1;
	cout<<s3<<end
}
7、随机访问string中的字符

随机访问string中的字符,就是用下标运算符可以访问string对象中指定位置的字符,string对象s的下标范围从0到s.size()-1

最后,我们以一道有关的例题来结束本篇文章,让各位读者更加深刻的感受到string有关操作的快捷与方便

用程序将0到15之间的十进制数转换成对应的十六进制形式。

#include <iostream>
#include <string>
#include <cstddef>
using namespace std;
int main(){
	const string hexdigits = "0123456789ABCDEF";
	cout << "Enter a numbers between 0 and 15: " << endl;
	string::size_type n;
		cin >> n;
	if (n < hexdigits.size())  	//检查下标范围
		cout <<"Hex number is: "<< hexdigits[n] << endl;
	else
		cout <<"Invalid input." << endl;
}

那么,我们本篇博客迎来了尾声,希望这篇博客,能够帮助到每一位看到这篇博客的朋友。往后的日子里博主将继续更新有关STL方面的简单应用,若有不足之处,还请私信或评论博主加以斧正,以期我们的共同进步!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值