首页 > 编程语言 >C++语言string类介绍和示例

C++语言string类介绍和示例

时间:2022-11-22 23:04:17浏览次数:45  
标签:std 函数 示例 C++ str 字符串 string


在C语言中,用0结尾的字符数组表示字符串,C的字符串有一个问题,就是定义后大小不能改变,存入的内容只能比数组小,不能大,如果不小心存多了,会引起内存的溢出,这个问题让程序员很郁闷。

C++的string部分的解决了这个问题,它会随存放字符的长度自动伸缩,程序员不必担心内存溢出的问题。string类还和c语言的字符串之间可以转换。

string的声明

首先,为了在程序中使用string类,必须包含头文件 <string>。如下:

#include <string>

注意这里不是string.h,string.h是C字符串头文件。

string类是一个模板类,位于std命名空间内,为方便使用还需要在程序中增加:

using namespace std;

创建一个string字符串对象很简单:

string str;

如果不指定命名空间,也就是说没有using namespace std,创建字符串对象的方法如下:

std::string str;

       示例(book215.cpp)

       

C++语言string类介绍和示例_字符串

也可以这么写:

       

C++语言string类介绍和示例_string_02

       

C++语言string类介绍和示例_字符串_03

 

string的重载的操作符

可以用=直接赋值。

可以用 ==、>、<、>=、<=、和!=比较字符串。

可以用+或者+=操作符连接两个字符串。

可以用[]获取特定的字符,类似数组。

最重要的一个成员函数

const char *c_str(); 

返回一个以NULL结尾的c字符串,即c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同,用于string转const char*。

std::string str1;

str1="hello world";

char str2[31];

strcpy(str2,str1.c_str());

string特性描述函数

可用下列函数来获得string的一些特性:

int size();             // 返回当前字符串的大小

int length();           // 返回当前字符串的长度

void clear();           // 清空字符串

string的其它成员函数

string提供了上百个成员函数,非常丰富,丰富得有点眼花,各位自己找资料,有空的时候再研究一下,断章取义的使用,注意,是有空的时候。

string的本质

      string是一个类,通过动态分配内存,实现对字符串的存储,我们来看以下代码。

       示例(book216.cpp)

       

C++语言string类介绍和示例_C语言_04

       运行结果

       

C++语言string类介绍和示例_字符串_05

通过以上的例子,我们可以看到,string对象用于存放字符的内存地址是变化的,不是什么神奇的技术。

应用经验

      C++的string类是一个变长的字符串,不需要程序员担心内存溢出的问题,还提供了很多字符串操作函数,初学者可能会想,用它取代C语言中的字符串(以0结尾的字符数组)一定是个很好的主意。我要告诉各位,这是不可能的,因为string中的字符串存储的内存空间没有固定的位置(它也没办法有固定位置)。

对初学者来说,只会用C和C++写一些简单的程序,做一些简单的事情,不懂得实际开发的需求,例如Oracle和MySQL数据库提供的接口,在数据交换的时候需要绑定一个固定的地址,string是做不到的。

我的建议是采用string存放一些需要动态分配内存的临时数据,避开动态内存技术带来的坑,然后转换为C的字符串。C的字符串没有string类那么丰富的成员函数,这个不是问题,我们可以自己写,这也是我不想介绍string成员函数的原因,与其花时间去研究string的成员函数,还不如自己写一个。

所以,了解string类的原理和一些用得着的成员函数就可以了,不必太深入研究,意义不大。

 

版权声明


作者:码农有道

如果文章有错别字,或者内容有误,或其他的建议或意见,请您留言指正,非常感谢!!!

 

标签:std,函数,示例,C++,str,字符串,string
From: https://blog.51cto.com/u_13748800/5878706

相关文章

  • C++语言类和对象介绍和示例
     C++类和对象C语言中结构体(struct)是一种构造类型,可以包含若干成员变量,可以通过结构体来定义结构体变量。C++中的类(class)可以看成结构体的升级版,类也是一种构造类型,但是进......
  • C++语言函数重载详解和示例
     C++函数重载的概念在实际开发中,有时候我们需要实现几个功能类似的函数,只是有些细节不同。例如把变量的值写入文件,变量的类型int、long、double、char,需要通过参数把变量......
  • 从C语言到C++语言
      ​​C++​​​ 读作“C加加”,是“CPlusPlus”的简称。顾名思义,C++是在​​C语言​​的基础上增加新特性。从语法上看,C语言是C++的一部分,C语言代码几乎不用修改就......
  • C/C++语言学习的策略
    断章取义C语言出现50年了,有很多内容已过时,至少有百分之二十的内容没有实用价值。C++更过份,对程序员来说,至少有百分之七十的内容没有实用价值。Linux系统也是,命令上千个,对程......
  • C/C++程序员如何学习英语
       英语是程序员的重要技能,有多重要?比较重要,极其重要吗?也不一定。    我是高中毕业,在刚开始学习计算机的一两年,曾经买过许国璋英语四级和计算机英文方面的书籍......
  • C++学习笔记--引用与返回值
    //#include<iostream>//usingnamespacestd;////int&fun()//注意类型要保持一致//{// inta=12;//不能引用局部变量// returna;//}////intmain()//{// in......
  • C++学习笔记——交换
    //#include<iostream>//usingnamespacestd;//voidswap(int&a1,int&b1)//该情况下,将主函数中的a和b分别传递给了a1和b1,在引用的作用下,a和a1,b和b1分别共用一个空间,......
  • C++学习笔记——类
    //#include<iostream>//usingnamespacestd;////classFirst//在C++中,struck结构体是一个特殊的类////在类中,默认的访问修饰符为pr......
  • C++学习笔记——类中的访问修饰符
    //#include<iostream>//usingnamespacestd;////classSecond//{////访问修饰符的作用,提高代码的安全性//private://私有成员,只被该类的内部所调用,类内若不写......
  • C++学习笔记--new和delete运算符
    //#include<iostream>//usingnamespacestd;////intmain()//{// ////使用new申请一个新的空间// ////int*p1=newint; //申请一个新的空间,new+type后面的类型要和前......