关于C++ string和c类型字符数组的对比
在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++如何通过ostringstream实现任意类型转string
再使用整型转string的时候感觉有点棘手,因为itoa不是标准C里面的,而且即便是有itoa,其他类型转string不是很方便.后来去网上找了一下,发现有一个好方法: 复制代码 代码如下: #include <iostream>#include <sstream>#include <string>using namespace std; int main(){ int a = 55; double b = 65.123; string str = "&quo
-
c++中的string常用函数用法总结
标准c++中string类函数介绍 注意不是CString之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够.字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要.我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?).我们尽可以把它看成是C++的基本数据类型. 好了,进入正题---首先,为了在我们的程序中使用string类型,我们必须包含头文件 <string>
-
c++ String去除头尾空格的方法
本文实例讲述了c++ String去除头尾空格的方法,分享给大家供大家参考.具体实现方法如下: 实现该功能可使用string的find_first_not_of,和find_last_not_of方法,具体实现带如下: 复制代码 代码如下: #include <iostream> #include <string> std::string& trim(std::string &); int main() { std::string s = " He
-
利用C++实现从std::string类型到bool型的转换
利用输入字符串流:std::istringstream 复制代码 代码如下: bool b;std::string s = "true";std::istringstream(s) >> std::boolalpha >> b; 但当字符串s为"1"时,上面的代码无法正确转换,此时应该用: 复制代码 代码如下: bool b;std::string s = "1";istringstream(s) >> b;
-
C++中sting类的简单实现方法
String 在C++的学习生涯我中发现String类的功能十分强大,所以我们是很有必要模拟实现它的,况且在面试的时候模拟实现一个String类也是面试官经常会考的,但是因为外界因素的限制我们是不可能模拟的和库里的string一致的(C++库里的string功能更强大),所以今天我们只模拟实现string的基本功能-构造函数,拷贝构造函数,析构函数,赋值运算符重载,运算符+=的重载,运算符[]的重载,c_str(得到一个C风格的字符指针,可操作字符串),Size,Push_Back,Insert
-
C字符串与C++中string的区别详解
在C++中则把字符串封装成了一种数据类型string,可以直接声明变量并进行赋值等字符串操作.以下是C字符串和C++中string的区别: C字符串 string对象(C++) 所需的头文件名称 <string>或<string.h> <string>或<string.h> 需要头文件 原因 为了使用字符串函数 为了使用string类 声明 方式 char name[20]; string name; 初始化方式 char name[20]="
-
C++实现string存取二进制数据的方法
本文实例讲述了C++实现string存取二进制数据的方法,分享给大家供大家参考.具体方法分析如下: 一般来说,STL的string很强大,用起来也感觉很舒服,这段时间在代码中涉及到了用string存取二进制数据的问题,这里记录一下,以供以后参考. 首先提一下STL中string的参考资料:http://www.cplusplus.com/reference/string/string/ ,不懂的朋友可以看下. 在数据传输中,二进制数据的buffer一般用系统预设的大数组进行存储,而不是STL的s
-
用标准c++实现string与各种类型之间的转换
要实现这个目标,非stringstream类莫属. 这个类在头文件中定义, < sstream>库定义了三种类:istringstream.ostringstream和stringstream,分别用来进行流的输入.输出和输入输出操作.另外,每个类都有一个对应的宽字符集版本. 简单起见,我主要以stringstream为中心,因为每个转换都要涉及到输入和输出操作. 示例1示范怎样使用一个stringstream对象进行从 string到int类型的转换 注意,使用string对象来代替字符数组
-
详解C++中StringBuilder类的实现及其性能优化
介绍 经常出现客户端打电话抱怨说:你们的程序慢如蜗牛.你开始检查可能的疑点:文件IO,数据库访问速度,甚至查看web服务. 但是这些可能的疑点都很正常,一点问题都没有. 你使用最顺手的性能分析工具分析,发现瓶颈在于一个小函数,这个函数的作用是将一个长的字符串链表写到一文件中. 你对这个函数做了如下优化:将所有的小字符串连接成一个长的字符串,执行一次文件写入操作,避免成千上万次的小字符串写文件操作. 这个优化只做对了一半. 你先测试大字符串写文件的速度,发现快如闪电.然后你再测试所有字符串拼接的速
-
从string类的实现看C++类的四大函数(面试常见)
朋友面试的一道面试题,分享给大家,面试官经常会问到的,实现string类的四大基本函数必掌握. 一个C++类一般至少有四大函数,即构造函数.拷贝构造函数.析构函数和赋值函数,一般系统都会默认.但是往往系统默认的并不是我们所期望的,为此我们就有必要自己创造他们.在创造之前必须了解他们的作用和意义,做到有的放矢才能写出有效的函数. #include <iostream> class CString { friend std::ostream & operator<<(std::
-
c++中string类成员函数c_str()的用法
1.string类成员函数c_str()的原型: const char *c_str()const;//返回一个以null终止的c字符串 2.c_str()函数返回一个指向正规c字符串的指针,内容和string类的本身对象是一样的,通过string类的c_str()函数能够把string对象转换成c中的字符串的样式; 3.操作c_str()函数的返回值时,只能使用c字符串的操作函数,如:strcpy()等函数.因为,string对象可能在使用后被析构函数释放掉,那么你所指向的内容就具有不确定性.
随机推荐
- jQuery抛物线运动实现方法(附完整demo源码下载)
- Mongodb实现的关联表查询功能【population方法】
- C#后台调用前台javascript的五种方法小结
- 使用PHP Socket写的POP3类
- thinkPHP简单遍历数组方法分析
- javascript中使用正则表达式进行字符串验证示例
- MySQL性能优化 出题业务SQL优化
- 详解javascript实现瀑布流列式布局
- Android6.0指纹识别开发实例详解
- Nodejs学习item【入门手上】
- 直接拷贝数据文件实现Oracle数据迁移
- 不用防火墙自动对付CC攻击防范vbs
- jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解
- jquery实现的随机多彩tag标签随机颜色和字号大小效果
- Linux 服务器同步 Rsync同步服务器文件
- java 使用foreach遍历集合元素的实例
- Spring boot学习教程之快速入门篇
- js获得当前系统日期时间的方法
- node.js中的console.assert方法使用说明
- Android中EditText的drawableRight属性设置点击事件