我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

今天小编给大家分享一下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类怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

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

C++指针和数组:字符和字符串、字符数组的关联和区别

字符串是一种重要的数据类型,但是c语言并没有显示的字符串数据类型,因为字符串以字符串常量的形式出现或者存储于字符数组中。在C++标准模板库(STL)中提供了string类,实现了对字符串的封装。
2022-12-23

c语言二维字符数组指针如何表示

C语言中,可以通过使用指针数组来表示二维字符数组。指针数组是一个数组,其元素都是指针。对于一个二维字符数组,可以使用指针数组表示每一行,然后使用指针数组的指针来表示整个二维字符数组。下面是一个示例代码:c#include int main(
2023-10-20

C语言数组指针和指针数组怎么应用

这篇文章主要介绍“C语言数组指针和指针数组怎么应用”,在日常操作中,相信很多人在C语言数组指针和指针数组怎么应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言数组指针和指针数组怎么应用”的疑惑有所帮助!
2023-06-30

C#字节数组和字符串怎么相互转换

这篇“C#字节数组和字符串怎么相互转换”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#字节数组和字符串怎么相互转换”文章吧
2023-07-05

string字符串转为数组怎么实现

可以使用split()方法将字符串转换为数组。具体的方法是将字符串作为参数传递给split()方法,并指定分隔符。例如:string = "hello,world"array = string.split(",")print(arra
string字符串转为数组怎么实现
2024-04-08

c++中字符串数组怎么定义

在 c++ 中,通过以下步骤定义字符串数组:声明数组类型:char array_namesize;初始化数组:可以使用字符串文字、字符串常量或 std::string;访问数组元素:使用下标运算符 ([ ])。如何在 C++ 中定义字符串数
c++中字符串数组怎么定义
2024-05-10

c语言怎么清空字符数组

C语言中清空字符数组可以使用以下几种方式:1. 使用循环遍历数组,将每个元素设置为空字符'\0'。```c#include int main() {char str[100] = "Hello";for (int i = 0; i str[
2023-09-29

php怎么使用指定符号分割字符串转数组

两种实现方法:1、使用explode()函数以指定符号为分割符来拆分字符串并转为数组,语法“explode("指定符号",$str)”;2、使用preg_split()函数通过一个正则表达式匹配指定字符来分割字符串并转为数组,语法“preg_split('/指定符号/',$str,-1,PREG_SPLIT_OFFSET_CAPTURE)”。
2023-05-14

java怎么把字符串转换成字符数组

java怎么把字符串转换成字符数组1、将字符串变成数组方法:java.lang包中有String.split()方法,java中通常用split()分割字符串,返回的是一个数组。特殊转义字符,必须加""(“.”和“|”都是转义字符)在Java语言编程时,使用“
java怎么把字符串转换成字符数组
2017-06-21

C#中怎么实现字符数组转换

这期内容当中小编将会给大家带来有关C#中怎么实现字符数组转换,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#字符数组转换字符串类 System.String 提供了一个 void ToCharArray
2023-06-17

C语言字符串数组怎么定义

在C语言中,可以使用字符数组来表示字符串。字符串数组的定义方式有两种:1. 使用字符数组:可以通过声明一个字符数组来定义字符串数组。```cchar str_array[10][20]; //定义一个长度为10的字符串数组,每个字符
2023-09-29

利用java怎么将字符串转换为String数组

这篇文章将为大家详细讲解有关利用java怎么将字符串转换为String数组,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。实现方法如下:package Tsets;import java.ut
2023-05-31

c语言字符串数组怎么赋值

在C语言中,字符串数组的赋值可以通过以下几种方式实现:1. 使用字符串常量直接赋值:```cchar str[] = "Hello, world!";```2. 使用strcpy函数进行赋值,需要包含头文件:```c#include cha
2023-08-09

c++中字符数组的长度怎么求

c++ 中求字符数组长度的标准方法是使用 strlen() 函数。该函数接受指向字符数组的指针,返回数组中以 '\0' 结尾的字符数。要使用它,声明数组、调用 strlen() 并打印结果。strlen() 不计算空字符本身的长度,对于 c
c++中字符数组的长度怎么求
2024-05-10

php汉字字符串怎么转数组

这篇文章主要讲解了“php汉字字符串怎么转数组”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php汉字字符串怎么转数组”吧!说明1、首先创建一个PHP示例文件。2、然后定义一个汉字字符串;最
2023-06-20

C#中怎么将字节数组转换成字符串

C#中怎么将字节数组转换成字符串,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C#字节数组转换成字符串如果还想从 System.String 类中找到方法进行字符串和字节数组之
2023-06-17

golang字符串怎么转数组

在 Golang 中,可以使用以下两种方式将字符串转换为数组:使用 strings.Split() 函数将字符串按照指定的分隔符拆分为字符串切片。import "strings"func main() {str := "Hello,Wo
2023-10-20

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录