概述
字符串对象及其操作
C++为字符串提供了一种新的自定义类型:字符串类string
采用类来实现字符串,具有如下特点:
- 采用动态内存管理,不必担心存储空间是否足够,甚至都不用有字符数组的概念
- 能够检测和控制诸如越界之类的异常,提高使用的安全性
- 封装字符串多种处理操作,功能增强
- 可以按运算符形式操作字符串,使用简单
C++程序中使用string类型,相比于C语言风格字符串更加方便,更加安全
使用string类需要将其头文件包含到程序中,预处理命令为:
#include< string > //不能写string.h
- 字符串对象的定义和初始化
定义和初始化字符串对象,与变量的方法类似。如果string对象没有初始化一律是空字符串。需要注意的是C++字符串对象不需要NULL结尾。
char ch[20]; //C风格字符串
string str1; //定义string对象
string s1,s2,s3; //定义多个string对象
char ch[20]="java"; //C风格字符串初始化
string str2="java"; //string对象复制初始化
string str3("C++"); //string对象直接初始化
- 字符串对象的引用
与变量类似,直接使用string对象名就表示它的引用
str1 = "HelloWorld!!!"; //使用string对象
- 字符串对象的输入和输出
可以在输入输出语句中直接使用string对象来输入输出字符串
cin>>str1; //输入字符串到str1对象中存放
cout<<str1; //输出str1对象中的字符串
gets(s1); //输入C风格字符串到字符数组中存放
puts(s1); //输出C风格字符串
- 字符串对象与C风格字符串的转换
str1 = "java";
//C风格字符串可以直接赋给string
str1.c_str();
//string转换为C风格字符串,返回char指针
str1.copy(s1,n,pos);
//把str1中pos开始的n个字符复制到s1字符数组
string对象允许使用运算符进行操作,实现类似C风格字符串的处理。
如复制(strcpy),连接(strcat),比较(strcmp)等
- 字符串赋值
string对象可以使用赋值运算,其功能是字符串复制。可以将字符串常量赋给string对象
str1 = "pascal"; //字符串常量复制到string对象中
strcpy(s1,"pascal"); //C风格字符串复制到字符数组中
str1.assign(s1,n); //将C风格字符串s1开始的n个字符赋值给str1
- 字符串连接运算
string对象允许使用加号(+)和复合赋值(+=)运算符来实现两个字符连接操作
str1 = "Hello",str2 = "World",str3 = "war";
str1 = str2+str3; //str1结果为Worldwar
str1 = str1+"World"; //str1结果为HelloWorld
str1 += str3; //str1结果为Hellowar
- 字符串关系运算
string对象可以使用关系运算符来对字符串进行比较
str1 = "ABC",str2 = "XYZ";
str1 > str2; //结果为假
str1 < str2; //结果为真
str1 == "ABC"; //结果为真
字符串成员函数
string对象可以调用其成员函数来实现字符串处理,这里例举一些重要的操作:
ch = "ABCDEFGHIJK";
//获取字符串的长度
n = ch.size(); //n为11
n = ch.length(); //n为11
//检查字符串是否为空字符
a = ch.empty(); //a为假
//得到子字符串
s1 = ch.substr(2,4); //从下标2开始的4个字符,s1为CDEF
//查找子字符串
n = ch.find("DEF",pos); //从pos开始查找字符串"DEF"在ch中的位置,n为3
//删除字符
ch.erase(3,5); //从下标3开始往后删5个字符,ch变成ABCIJK
//增加字符
ch.append("12345",1,3); //在ch末尾增加"12345"下标从1开始的3个字符,即"234"
//字符串替换和插入操作
ch.replace(p0,n0,s1,n); //删除从p0开始的n0个字符,然后在p0处插入字符串s1的前n个字符
ch.replace(p0,n0,s1,pos,n); //删除从p0开始的n0个字符,然后在p0处插入字符串s1中pos开始的前n个字符
ch.insert(p0,s1,n); //在p0位置插入字符串s1前n个字符
ch.insert(p0,s1,pos,n); //在p0位置插入字符串s1从pos开始的前n个字符
字符串对象数组
可以定义字符串对象数组,即数组元素是字符串对象,定义形式与数组类似
最后
以上就是成就高山为你收集整理的字符串处理运用总结(2)(C++)的全部内容,希望文章能够帮你解决字符串处理运用总结(2)(C++)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复