c++ string c_str() 和data()区别
看下面的英文解释:
const char* c_str ( ) const;
Get C string equivalent
Generates a null-terminated sequence of characters (c-string) with the same content as the string object and returns it as a pointer to an array of characters.
A terminating null character is automatically appended.
const char* data() const;
Get string data
Returns a pointer to an array of characters with the same content as the string.
Notice that no terminating null character is appended (see member c_str for such a functionality).
第一点:c_str()字符串后有'\0',而data()没有。
第二点: data 返回的数组(虽然是char* 但是和 c_str 还是有本质区别的)-----data 能解决一个问题 string 串中 包含 \0 情况的问题。结合size 方法就能随意访问返回的数据了. 注意他返回的是array 数组.
中间带\0结束符的string对象
有多种方法可实现中间带结束符\0的string对象初始化。但是像:
string s="123 \0 123"; s5="abc\0"; s5+="def\0";
这样的初始化方法都是不行的,因为编译器或运行时默认都会截掉结束符后面的字符串。结果就是:
s="123 "
s5="abcdef"
1、构造法初始化
string s5= string("12345 \0 54321", 13);
这样的方式初始化,这时 s5="12345 \0 54321"
2、append函数添加
除了上面方法,还可以使用append函数,代码如下:
s5.append("abc\0",4); s5.append("def\0",4); 知道怎么构造,知道怎么解析,string char* 相关处理也就清晰了。
相关参考资料:
http://www.metsky.com/archives/582.html
http://oss.org.cn/html/32/n-3732.html
转载于:https://www.cnblogs.com/porter/p/3830190.html
c++ string c_str() 和data()区别相关推荐
- string中c_str()、data()、copy(p,n)函数的用法
转载:http://www.cnblogs.com/qlwy/archive/2012/03/25/2416937.html 标准库的string类提供了3个成员函数来从一个string得到c类型的字 ...
- CString与string、char*的区别和转换
我们在C++的开发中经常会碰到string.char*以及CString,这三种都表示字符串类型,有很多相似又不同的地方,常常让人混淆.下面详细介绍这三者的区别.联系和转换: 各自的区别 char*: ...
- string 与char *的区别
string是STL当中的一个容器,对其进行了封装,所以操作起来非常方便. char *是一个指针,可以指向一个字符串数组,至于这个数组可以在栈上分配,也可以在堆上分配,堆得话就要你手动释放了. st ...
- String与StringBuffer的区别
String与StringBuffer的区别 简单地说,就是一个变量和常量的关系.StringBuffer对象的内容可以修改:而String对象一旦产生后就不可以被修改,重新赋值其实是两个对象. St ...
- String,StringBuffer和StringBuilder区别?
String是字符串常量,final修饰;StringBuffer字符串变量(线程安全);StringBuilder 字符串变量(线程不安全).此外StringBuilder和StringBuffer ...
- JAVA中String与StringBuffer的区别
String和StringBuffer的区别,网上资料可以说是数不胜数,但是看到这篇文章,感觉里面做的小例子很有代表性,所以转一下,并自己做了一点总结. 在java中有3个类来负责字符的操作. 1.C ...
- String和StringBuffer的区别,String长度是固定的?
String和StringBuffer的区别,String长度是固定的? 区别: 1. String类字符串的长度是固定的,StringBuffer类字符串的长度是可变的.因为String改变的是地址 ...
- C++string类型与C语言字符数组的转换 std::string.c_str()函数
语法: const char *c_str();搜索 c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同. 这是为了与c语言兼容,在c语言中没有string类型,故必须通过 ...
- Java中string与String区别_JAVA中String与StringBuffer的区别
JAVA中String与StringBuffer的区别 2009-12-3文字大小:大中小 在java中有3个类来负责字符的操作. 1.Character 是执行 单个字符操作的, 2.String ...
最新文章
- NVIDIA Nsight Systems CUDA 跟踪
- java播放器使用教程_java 实现音乐播放器的简单实例
- 优秀的词云展示第三方库——wordcloud
- 输出9*9口诀python-Python输出9*9乘法表的方法
- xamarin使用mysql_[开源] .NetCore .NetFramework Xamarin 使用 ORM FreeSql 访问 MySql
- python 子线程coredump_python多线程备份mysql数据工具:mysqlpdump使用方法
- 【转】30种MySQL索引优化的方法
- php怎么把日期加时间,将小时分钟添加到日期时间 - php
- 【华为云技术分享】【昇腾】ModelArts与Atlas 200 DK云端协同开发——行人检测Demo(提供完整Demo)
- int sel 在c语言表示,C语言教程ch1初识C程序.ppt
- 边缘独立(marginal independent)的理解及举例
- python代码解读器_python文章生成器(附源码+讲解)
- jQuery中animate()的方法以及$(body).animate({scrollTop:top})不被Firefox支持问题的解决...
- [转]人像识别是个伪命题
- 绿坝 图像过滤比对算法有感
- iOS 修改系统定位(非越狱)
- 微信公众号推文封面图设置
- [乐意黎转载]“多情自古空余恨”的下句是什么?
- 天善智能网络爬虫学习~
- Rman 在非归档模式增量備份
热门文章
- 一个普通摄像头就让二次元老婆“活”了过来,网友:求收费
- 71岁的亿万富翁坐自家飞船成功游览太空!此前已为太空旅行砸了超10亿美元
- 清华姚班的科研能力,能孵化出一家怎样的公司?
- 不同数据库中查询前几条记录的用法(SQL Server/Oracle/Postgresql)
- java的list类
- JdbcTemplate(1)(数据连接池)
- web人力资源信息系统开发日志②
- 在sql server中建存储过程,如果需要参数是一个可变集合怎么处理?
- mac下完全卸载postgresql的方法
- WPF学习笔记——设置ListBox选中项的背景颜色