关于C++string的长度陷阱
std::string s = ...;
.....
assert(s.length() == strlen(s.c_str()));
一般认为这段代码是不会断言失败的,但是实际上这段代码可能是会断言失败的
std::string s = "ABCD";
s[2] = '\0';
std::cout << s.length();
std::cout << strlen(s.c_str());
std::cout << s.c_str();
assert(s.size() == strlen(s.c_str()));
我们可以看到s的length()返回4(即s的实际长度),strlen(s.c_str()返回2(即s中内容作为字符串的长度)
关于C++string的长度陷阱的更多相关文章
- 最大的 String 字符长度是多少?
String 类可以说是在 Java 中使用最频繁的类了,就算是刚刚接触 Java 的初学者也不会陌生,因为对于 Java 程序来说,main 方法就是使用一个 String 类型数组来作为参数的(S ...
- string字符串长度和字节长度问题
string str = "abcdef 安安安"; int i = str.Length; byte[] bt = System.Text.Encoding.Default.Ge ...
- C++ string 构造的陷阱
先看代码 #include<iostream> #include<string> using namespace std; int main(int argc, char ** ...
- Swift中计算String的长度
extension String { var length: Int { return countElements(self) } // Swift 1.1 } extension ...
- 【C/C++】string的长度
一般用 s.length() s.size() 两种 size也可以用于vector string和vector的区别 string输入直接cin vector一般类似压栈pushback 输入一般是 ...
- 【手记】注意BinaryWriter写string的小坑——会在string前加上长度前缀length-prefixed
之前以为BinaryWriter写string会严格按构造时指定的编码(不指定则是无BOM的UTF8)写入string的二进制,如下面的代码: //将字符串"a"写入流,再拿到流的 ...
- 从string.size()和string.length()聊到长度的问题和一个关于数据结构定义的技巧
最近工作中要查看一下string的长度,然后忘了是哪个函数,所以去网上搜了一搜,决定把网上学的和其他的一些有关长度的东西在这里汇总一下, 然后就有了此帖. string 是从c语言的char数组的概念 ...
- linux的string操作(字符串截取,长度计算)
按指定的字符串截取 1.第一种方法: ${varible##*string} 从左向右截取最后一个string后的字符串 ${varible#*string}从左向右截取第一个string后的字符串 ...
- 关于JAVA中String类型的最大长度
前些天看到一道面试题,题目很容易理解:String的长度限制是多少? 针对这个题目,浏览了网友的回答,大概得到了3个层次的答案. 最浅的层次: 近似计算机内存大小的长度.这是作为一个程序员最浅显的回答 ...
随机推荐
- CSS 居中大全【转】
我看最近微博流行 CSS 居中技术,老外码农争相写相关的文章,一篇赛一篇的长啊,我把几篇归纳总结了一下,算是笔记. 孔乙己曾说:“茴香豆的回字有四种写法”,万一哪天有个面试官问你:“居中一共有几种写法 ...
- oc-25- @property @synthesize
s.h #import <Foundation/Foundation.h> @interface Student : NSObject { @public NSString *_name; ...
- MHA 安装过程 原创
root@monitor yum.repos.d]# cat CentOS-Base.repo [base]name=CentOS-$releasever - Basefailovermethod=p ...
- 高效编程之cache命中对于程序性能的影响
下面这个代码用两个双层循环遍历了一个二维数组里所有的元素,以我自己机器的测试 上面那个循环耗时基本为下面的一半,两个循环的时间复杂度相同,为什么会有这么大的差别? 首先要明白的是不管是几维数组,他们都 ...
- MUI功能列表
打开App引导页面 - http://www.bcty365.com/content-146-4970-1.html 页面传值 - http://www.bcty365.com/content-1 ...
- jquery ui 改写cloes事件
htmlAjax:{//模板ajax请求参数设置项 url:"template/task/task_create.html", data ...
- 史上最全的 UIWebview 的 JS 与 OC 交互
来源:伯乐在线 - 键盘风筝 链接:http://ios.jobbole.com/89330/ 点击 → 申请加入伯乐在线专栏作者 其实一直想给大家整理一下JS与OC的交互,但是没有合适的机会,今天借 ...
- J2SE J2EE J2ME的区别
J2SE J2EE J2ME的区别 J2SE J2EE J2ME的区别多数编程语言都有预选编译好的类库以支持各种特定的功能,在Java中,类库以包(package)的形式提供,不同版本的Java提供不 ...
- JavaSE——面向对象与面向过程、类与对象、(属性、方法、构造器)等
一:面向对象与面向过程 二者都是一种思想,面向对象是相对于面向过程而言的. 面向过程: 1.面向过程思想强调的是过程(动作). 2.在面向过程的开发中,其实就是面向着具体的每一个步骤和过程,把每一个步 ...
- Java SE ---类,方法,对象等
1,面向对象程序设计的三大基本特征:继承(Inheritence).封装(Encapsulation).多态(Polymorphism) 2,如何定义类? 修饰符 cla ...