C++ string和c类型字符数组的比较

转载 2016年08月29日 11:18:24

在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字符串进行初始化时,或是指定初始化的长度(如strings2(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();
 

相关文章推荐

char*数组(c类型字符串)和c++中的string的转换、字符串比较、char*数组等问题

char ch[100]; string str; 把char*(c类型的string)数组转换为string: str = ch; //即可 str.assign(ch); //也可 把s...

c++数组和string对于字符处理的比较

我们在设计程序时,经常会出现要求输入一段字符串。

C#初始化字符串数组的三种方式

本人在程序中遇到了麻烦,在数据赋值的时候,总是提示未将对象引用到对象实例,后来想想应该是字符串数组初始化出来问题,果真还是,找到下面的这个朋友分享的方法,在此分享给大家。对于一维数组:using Sy...

[C++ Primer Plus]学习笔记--关于C++ string和c类型字符数组的对比

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

C++ 字符串string与字符数组char[ ]的异同

1  字符串string与字符数组char[ ]的异同 1.1  了解字符char与字符串的区别  a    char类型不是C++的基本数据类型,实质上是8位的整数类型,在计算机保存的是...

C++中字符数组和字符串string

字符数组 C++中字符数组用char str[]可以用来表示一个字符串。 (1)   数组的大小和字符串的长度。 数组的大小一定要大于字符串的长度,因为系统会自动补上一个’\0’作为字符串的结束标志。...

C++primer 4.3 C风格字符串--字符数组(strlen、strcpy、strcat)上

简介 建议 一C风格字符串 1C风格字符串简介 二C风格字符串的使用 三C风格字符串的标准库函数 四尽可能使用标准库类型string简介1. C风格字符串是以空字符null结束的字符数组;2. 字符串...

C/C++的一些关于字符数组和指针的小总结

1.数组作为参数,参数定义时可以写成 int b[]或是 int *b

C/C++常见笔试面试题(三)——字符数组做形参、内存申请与释放、宏

以下题目是我在牛客网上看到的。       1、分析代码是否有问题 链接:https://www.nowcoder.com/questionTerminal/7beda454b8a444428dfb6...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)