返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++字符数组、字符数组指针和string类怎么用
  • 469
分享到

C++字符数组、字符数组指针和string类怎么用

2023-06-29 10:06:04 469人浏览 泡泡鱼
摘要

今天小编给大家分享一下c++字符数组、字符数组指针和string类怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。C++

今天小编给大家分享一下c++字符数组、字符数组指针和string类怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

C++字符数组、字符数组指针和string类怎么用

C++中字符串的表示方式有很多种,根据自己目前掌握的有三种:

  • 字符数组;

  • 字符数组指针;

  • 标准库string类;

上面几种方式各有优点和缺点,按照自己的观点,如果处理的字符串的任务比较简单,则使用前两种方法所占用内存小,因而较为实用;如果需要进行字符串拼接和比较等功能,则使用string类比较合适,因为字符数组不含有处理函数。

1、字符数组和字符数组的指针

定义字符数组即使用char类型,字符数组的声明和初始化例子如下:

char duckWords[5] = "Eat";

给字符数组定义指针的语法如下,字符数组名依旧表示首地址:

char *pointerWords = duckWords;

字符数组和字符数组指针的使用方式,和普通数组与普通数组指针的使用方式完全相同:

printf("%c \n", duckWords[5]);printf("%c \n", *pointerWords);

需要注意的是,字符串的以“\0”结尾,所以对于“Say it”这个字符串实际上含有7个字符,因为表示字符串结尾标志的”\0“是自动添加的。此外,字符串创建含有多种语法,比较重要的一点是初始化时可以不指定数组长度:

char duckName[6]={'D','a','v', 'i', 'd'};char duckName[6]="David";char duckName[] = "David";

2、标准库string类

面向对象的角度看,string类才是更符合字符串操作的。必须注意,string是一个类而不是基本数据类型。

string类的功能主要体现在下面三个发面:

  • 含有多个构造函数,所以能采用多种方式进行初始化;

  • 包含众多的重载操作符;

  • 多种用于字符串处理的成员函数;

下面的第一个例子采用“+”运算符进行字符串拼接:

string duckName = "David";string duckAge = " 12"; string duckDescribe = duckName + duckAge; /// 需要使用string.c_str()才能输出完整字符串 printf("%s \n", duckDescribe.c_str());

第二个例子是使用string的成员函数length()进行字符串长度统计:

string duckName = "David";printf("%d \n", duckName.length());

当然,string类重载的操作符和含有的成员函数还有很多,但是使用方法都是类似的,不属于语法范畴,所以不做具体介绍。

3、补充

3.1C++自带string类的常用方法

  #include<iOStream>   #include<string>   using namespace std;      int main()   {       string str1 = "hello";       string* str2 = new string("hello");      string str3 = "world";      //获取字符串长度     int length = str1.length();     cout << "调用str.length()函数获取字符串长度:" << length << endl;     cout << endl;         //字符串连接      string str4 = str1 + str3;      cout << "字符串连接结果:" << str4 << endl;      cout << endl;          //字符串比较      if (str1 < str3)          cout << "字符串比较:" << "str1<str2" << endl;      cout << endl;      //获取字符串的第一个字符      string::const_iterator it = str1.begin();      cout << *it << endl;      cout << endl;          //获取字符串的最后一个字符     it = str1.end();//end是指向最后一个字符后面的元素,而且不能输出,所以cout << *it << endl;这样输出会报错      it--;      cout << *it << endl;      cout << endl;       //倒置串     reverse(str1.begin(), str1.end());   cout << "倒置串:" << str1 << endl;    cout << endl;     //字符串转字符数组     //不推荐的用法,但是需要了解    string a = "abc123";     const char *b;//这里必须为const char *,不能用char *,不然下一句会报错     b = a.c_str();     cout << "a:" << a << endl;     cout << "b:" << b << endl;     a = "asd456";     cout << "a:" << a << endl;     cout << "b:" << b << endl;      //推荐用法      string c = "abc123";     char *d = new char[20];      strcpy(d, c.c_str());//因为这里没有直接赋值,所以指针类型可以不用const char *    cout << "c:" << c << endl;      cout << "d:" << d << endl;     c = "asd456";      cout << "c:" << c << endl;    cout << "d:" << d << endl;    cout << endl;        //查找串     //find-从指定位置起向后查找,直到串尾      string st1("babbabab");    cout << st1.find('a') << endl;//1,默认从位置0(即第1个字符)开始查找     cout << st1.find('a', 2) << endl;//4   在st1中,从位置2(b,包括位置2)开始,查找a,返回首次匹配的位置     cout << (st1.find('c', 0) == -1) << endl;//1       cout << (st1.find('c', 0) == 4294967295) << endl;//1   两句均输出1,原因是计算机中-1和4294967295都表示为32个1(二进制)     string st2("aabcbcabcbabcc");     str1 = "abc";     cout << st2.find(str1, 2) << endl;//6,从st2的位置2(b)开始匹配,返回第一次成功匹配时匹配的串(abc)的首字符在st2中的位置,失败返回-1      cout << st2.find("abcdefg", 2, 3) << endl;//6   取abcdefg得前3个字符(abc)参与匹配,相当于st2.find("abc", 2)       //rfind-从指定位置起向前查找,直到串首     cout << st1.rfind('a', 7) << endl;//6       //find_first_of-在源串中从位置pos起往后查找,只要在源串中遇到一个字符,该字符与目标串中任意一个字符相同,就停止查找,返回该字符在源串中的位置;若匹配失败,返回-1      string str6("bcgjhikl");     string str7("kghlj");     cout << str6.find_first_of(str7, 0) << endl;//2,从str1的第0个字符b开始找,g与str2中的g匹配,停止查找,返回g在str1中的位置2          //find_last_of-与find_first_of函数相似,只不过查找顺序是从指定位置向前     string str("abcdecg");     cout << str.find_last_of("hjlywkcipn", 6) << endl;//5,从str的位置6(g)开始向前找,g不匹配,再找c,c匹配,停止查找,返回c在str中的位置5     //find_first_not_of-在源串中从位置pos开始往后查找,只要在源串遇到一个字符,与目标串中的任意字符都不相同,就停止查找,返回该字符在源串中的位置;若遍历完整个源串,都找不到满足条件的字符,则返回-1     cout << str.find_first_not_of("kiajbvehfgmlc", 0) << endl;//3   从源串str的位置0(a)开始查找,目标串中有a,匹配,..,找d,目标串中没有d(不匹配),停止查找,返回d在str中的位置3        //find_last_not_of-与find_first_not_of相似,只不过查找顺序是从指定位置向前     cout << str.find_last_not_of("kiajbvehfgmlc", 6) << endl;//3      system("pause");     return 0;  }

 运行结果:

C++字符数组、字符数组指针和string类怎么用

以上就是“C++字符数组、字符数组指针和string类怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网其他教程频道。

--结束END--

本文标题: C++字符数组、字符数组指针和string类怎么用

本文链接: https://lsjlt.com/news/324457.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++字符数组、字符数组指针和string类
    目录1、字符数组和字符数组的指针2、标准库string类3、补充3.1C++自带string类的常用方法 C++中字符串的表示方式有很多种,根据自己目前掌握的有三种: 字符数组;字符...
    99+
    2024-04-02
  • C++字符数组、字符数组指针和string类怎么用
    今天小编给大家分享一下C++字符数组、字符数组指针和string类怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。C++...
    99+
    2023-06-29
  • C++指针和数组:字符和字符串、字符数组的关联和区别
    目录一、字符指针、字符数组字符指针字符数组二、字符串指针三、(字符串)指针数组四、总结字符串的本质就是字符数组,将字符串作为字符数组来处理。字符数组和字符串都可以作为存放字符的数组,...
    99+
    2022-12-23
    C++字符 C++字符串 C++字符数组
  • 掌握指针进阶:探索字符指针、数组指针和指针数组的妙用
    💓博客主页:江池俊的博客⏩收录专栏:C语言进阶之路👉专栏推荐:✅C语言初阶之路 ✅数据结构探索💻代码仓库:江池俊的代码仓库​🎪 社区...
    99+
    2023-09-07
    c语言 开发语言 学习 经验分享
  • c语言二维字符数组指针如何表示
    C语言中,可以通过使用指针数组来表示二维字符数组。指针数组是一个数组,其元素都是指针。对于一个二维字符数组,可以使用指针数组表示每一...
    99+
    2023-10-20
    c语言
  • C语言数组指针和指针数组怎么应用
    这篇文章主要介绍“C语言数组指针和指针数组怎么应用”,在日常操作中,相信很多人在C语言数组指针和指针数组怎么应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言数组指针和指针数组怎么应用”的疑惑有所帮助!...
    99+
    2023-06-30
  • 怎么获取string字符串指针
    要获取一个字符串的指针,可以使用以下几种方法:1. 使用string的c_str()方法:string类提供了一个c_str()方法...
    99+
    2023-09-22
    string
  • C语言字符串替换:字符,字符串,字符数组详解
    目录案例描述案例分析必备知识1,字符数组(1)字符数组的定义(2)字符数组的初始化2,字符串概念(1)字符串的概念(2)用字符初始化字符数组(3)获取字符串的长度3,字符串与指针4,...
    99+
    2024-04-02
  • C语言字符串替换:字符,字符串,字符数组详解
    在C语言中,字符串是由字符数组表示的。一个字符串是一个以null字符('\0')结尾的字符数组。字符替换:要替换字符串中的某个字符,...
    99+
    2023-08-15
    C语言
  • mysql 解析json字符串、数组字符串、json数组字符串
    背景: 笔者使用mysql 5.7进行了一次json字符串的解析,因为一直在搞大数据相关的数据库、olap等,太久没有用mysql5.x的版本,一些函数已经不知道支不支持,我的同事建议我使用like、rlike模糊匹配的方式,身为数据人我不...
    99+
    2023-08-17
    mysql json 数据库
  • C#字节数组和字符串怎么相互转换
    这篇“C#字节数组和字符串怎么相互转换”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#字节数组和字符串怎么相互转换”文章吧...
    99+
    2023-07-05
  • string字符串转为数组怎么实现
    可以使用split()方法将字符串转换为数组。具体的方法是将字符串作为参数传递给split()方法,并指定分隔符。例如: strin...
    99+
    2024-04-08
    string
  • c语言怎么清空字符数组
    C语言中清空字符数组可以使用以下几种方式:1. 使用循环遍历数组,将每个元素设置为空字符'\0'。```c#include int ...
    99+
    2023-09-29
    c语言
  • c++中字符串数组怎么定义
    在 c++ 中,通过以下步骤定义字符串数组:声明数组类型:char array_namesize;初始化数组:可以使用字符串文字、字符串常量或 std::string;访问数组元素:使用...
    99+
    2024-05-10
    c++ 字符串数组 字符串常量
  • 字符串转成字符数组 javascript
    在开发过程中,我们常常需要将一个字符串转换成一个字符数组。在JavaScript中,这一过程并不复杂,我们可以通过一些简单的操作来完成它。本文将介绍在JavaScript中如何将一个字符串转成一个字符数组。方法一:使用split()方法Ja...
    99+
    2023-05-18
  • php数组转字符串数组
    在 PHP 编程中,数组是一种非常常用的数据类型,用于保存一组值。但是有时候需要将数组转换为字符串数组,这可以通过使用 PHP 内置函数来实现。本文将介绍一些方法,来帮助将 PHP 数组转换为字符串数组。方法一: implode() 函数i...
    99+
    2023-05-23
  • java怎么把字符串转换成字符数组
    java怎么把字符串转换成字符数组1、将字符串变成数组方法:java.lang包中有String.split()方法,java中通常用split()分割字符串,返回的是一个数组。特殊转义字符,必须加""(“.”和“|”都是转义字符)在Jav...
    99+
    2017-06-21
    java基础 java 字符串 字符数组
  • php怎么使用指定符号分割字符串转数组
    两种实现方法:1、使用explode()函数以指定符号为分割符来拆分字符串并转为数组,语法“explode("指定符号",$str)”;2、使用preg_split()函数通过一个正则表达式匹配指定字符来分割字符串并转为...
    99+
    2023-05-14
    php php数组
  • golang字符转数组
    Golang是Google推出的一种编程语言,它的设计目标是提高软件开发的效率和可维护性。在Golang中,字符和字符串是两种不同的数据类型,但我们经常会遇到需要将一个字符串转换成一个字符数组的需求。本文将介绍如何在Golang中实现字符转...
    99+
    2023-05-14
  • php汉字字符串怎么转数组
    这篇文章主要讲解了“php汉字字符串怎么转数组”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php汉字字符串怎么转数组”吧!说明首先创建一个PHP示例文件。然后定义一个汉字字符串;最后通过“...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作