当前位置:主页 > c/c++教程 > c string类型数组

关于C++ string和c类型字符数组的对比

发布:2022-10-21 08:55:22 59


我们帮大家精选了C++相关的编程文章,网友关梓菱根据主题投稿了本篇教程内容,涉及到c、string类型数组、c string类型数组相关内容,已被316网友关注,下面的电子资料对本篇知识点有更加详尽的解释。

c string类型数组

在c++中string是很方便操作的字符串,支持多种算数运算和比较运算,操作起来非常灵活。string也具有一些容器的性质,可以通过迭代器对字符元素进行访问

c类型的字符数组有如下三种初始化方式:

//前两种的初始化方式是等同的,最后一种没有‘\0'
char *cp="hello";
char c_arr[]="hello";
char c_arr2[]={'h','e','l','l','o'};

这三种定义c字符串的方式,其中前两种虽然形式不一样但含义是一摸一样的,没有差别,在计算字符长度的时候都会比实际显示的字符长度多1,因为这两种初始化会在字符串末尾默认添加了一个‘\0'。而第三种初始化方式的长度就是方括号里的字符数,这种方式并不会默认末尾结束符'\0'。如果用第三种方式声明和前两种方式同样的字符串则需这样声明:

char c_arr2[]={'h', 'e', 'l', 'l', 'o', '\0' };

string可以用c字符串进行初始化,如

string s1(cp);//复制cp中的所有字符到s1中(除了末尾空字符'\0')
string s2(c_arr,2);//复制c_arr两个字符到s2中
string s3(c_arr2);//error

但注意,当对string用c字符串进行初始化时,或是指定初始化的长度(如string s2(c_arr,2);),如果不指定长度需要c字符串必须以'\0'结尾,如果不是以'\0'结尾则程序会出错。如代码(string s3(c_arr2);)程序编译的时候就会出错。

string类型也可以转换成c类型的字符串,可以通过string的成员方法string::c_str()进行转换。如下

string str("hello");
const char *cp=str.c_str();

以上就是小编为大家带来的关于C++ string和c类型字符数组的对比全部内容了,希望大家多多支持码农之家~


相关文章

  • C++实现数字转换为十六进制字符串的方法

    发布:2022-04-16

    这篇文章主要介绍了C++实现数字转换为十六进制字符串的方法,涉及C++操作数字与字符串转换的相关技巧,需要的朋友可以参考下


  • VC++中进程与多进程管理的方法详解

    发布:2021-05-28

    这篇文章主要介绍了VC++中进程与多进程管理的方法,以实例形式详细分析了进程与多进程管理中所涉及的进程、子进程、进程的互斥运行与进程的结束等概念与具体实现方法,非常具有参考借鉴价值,需要的朋友可以参考下


  • C++中对象的常引用、动态建立和释放相关知识讲解

    发布:2022-10-20

    给大家整理一篇关于C++的教程,这篇文章主要介绍了C++中对象的常引用、动态建立和释放相关知识讲解,是C++入门学习中的基础知识,需要的朋友可以参考下


  • 详解C++中的双冒号 ::

    发布:2022-09-06

    给网友朋友们带来一篇关于C++的教程,这篇文章主要介绍了C++中的双冒号 ::,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧


  • C++实现归并排序的实例

    发布:2021-10-08

    这篇文章主要为大家详细介绍了C++实现归并排序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


  • 深入理解C++中的new/delete和malloc/free动态内存管理及区别介绍

    发布:2022-06-23

    给大家整理一篇关于C++的教程,这篇文章主要介绍了深入理解C++中的new/delete和malloc/free动态内存管理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下


  • C++保存txt文件实现方法代码实例

    发布:2022-04-08

    这篇文章主要介绍了C++保存txt文件实现方法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下


  • 深入解析C++中类的多重继承

    发布:2022-09-14

    给网友朋友们带来一篇关于C++的教程,这篇文章主要介绍了深入解析C++中类的多重继承,包括多重继承相关的二义性问题,需要的朋友可以参考下


网友讨论