关于string类对象不是以空字符标记字符串末尾的探究
来源:互联网 发布:齐白石闲章知乎 编辑:程序博客网 时间:2024/06/05 20:35
《C++ Primer Plus》第五版中提到,不同于C-风格字符串,string类对象不使用空字符来标记字符串末尾。由此,进行了探究。纯属个人见解,请大家指正。
1、空字符为ASCII值为0的字符,即‘\0’,为此,编写以下代码测试(vs2010)
char chtemp[20] = { 'a', 'd', '\0', 'm'};
char chnul = chtemp[2];
cout<<chnul<<"为空字符"<<endl;
cout<<chtemp<<endl;
string strtemp = chtemp;
cout<<strtemp<<endl;
string strNull = "asdf";
cout<<strNull<<endl;
strNull[2] = '\0';
cout<<strNull<<endl;
char ch = 0;
strNull[2] = chnul;
cout<<strNull<<endl;
int len = strNull.length();
int len2 = strNull.size();
1、空字符为ASCII值为0的字符,即‘\0’,为此,编写以下代码测试(vs2010)
char chtemp[20] = { 'a', 'd', '\0', 'm'};
char chnul = chtemp[2];
cout<<chnul<<"为空字符"<<endl;
cout<<chtemp<<endl;
string strtemp = chtemp;
cout<<strtemp<<endl;
string strNull = "asdf";
cout<<strNull<<endl;
strNull[2] = '\0';
cout<<strNull<<endl;
char ch = 0;
strNull[2] = chnul;
cout<<strNull<<endl;
int len = strNull.length();
int len2 = strNull.size();
cout<<len<<endl<<len2<<endl;
运行结果(如图)
2、结果分析:
C-风格的字符串,的确是要以空字符结尾的。
而string对象中所存储的内容,是不以空字符结尾的。(不知道严格来说,此处是否可以称之为字符串,因为C++中字符串确实是以空字符结尾的一串字符)。
3、解释
string是C++引入的一种容器,它是可以用来存储字符串的,或者说存储一串字符的,其有效内容不以空字符结尾,而且其长度,我们使用size方法(为了和容器vector等一致而加入的名称)或者length()方法(描述气馁字符串的长度而加入)。而不能使用while( str[i] != '\0')来测试,只有C风格字符串才是这样使用的。
很多不解请大家来指点~~
0 0
- 关于string类对象不是以空字符标记字符串末尾的探究
- C++:如何删除string对象的末尾非数字字符
- 关于JAVASCRIPT为空或不是对象的检测
- 关于 '_EVENTTARGET'为空或不是对象 的奇怪错误
- 含有空字符0的char 字符串给string赋值
- 去除字符串末尾指定的字符实例
- std::string::find 空字符串 返回结果不是 string::npos
- 关于string类型的字符串是否以\0结尾
- 关于string类型的字符串是否以\0结尾
- 关于string类型的字符串是否以\0结尾
- 关于string类型的字符串是否以\0结尾
- Java 中关于String 对象的空对象(null), 空值(""),空格(" ")
- swift截断String末尾字符
- PHP学习笔记--字符串操作 作者:yezi33 字符串的整理: trim():除去字符串开头和末尾的空格或其他字符。函数执行成功时返回删除了string字符串首部和尾部空格的字符串,发生错误时返回空
- java的string类关于字符串一旦被初始化,就不可以被改变的
- 关于在结构体末尾定义空数组的用法
- Java 中关于String的空对象(null) ,空值(empty),空格 的总结
- Java 中关于String的空对象(null) ,空值(empty),空格 的总结
- Java利用Zxing生成二维码
- linux根分区满了怎么办?
- jsp正确引入js文件的方法
- 基于S3C6410的ARM11学习(七) 核心初始化之关闭MMU和CACHE
- 论文"Gradient Domain Guided Image Filtering" matlab实现代码
- 关于string类对象不是以空字符标记字符串末尾的探究
- [IOS 开发] 常用第三方框架和小工具
- easyui datagrid 扩展
- 梯形剖分入门(特殊情况)【ice】
- 手把手教你写专利申请书/如何申请专利
- Git SSH Key 生成步骤
- 新的人生方向
- 2016寒假训练——二分(2)
- 一些博客地址