EE_DSnP 板


LINE

第 30 行 ... 29 for (unsigned i = 0; i < l; ++i ) { 30 >> if (!s2[i]) 31 return (i < n)? 1: 0; ... 这行应该是要判断 string s2 有没有到结尾吧 但是这个用法不对 显然我们期待在字串结尾处有'\0'字元 但是在我们期待'\0'存在的地方已经超出string的范围了 string 的 operator[] 是不能dereference超过 size 长度的 如果超出长度 虽然他不会检查 但是会有潜在的危险 string 的标准中没有规定必须以结尾字元'\0' 结尾 所以每个library 可能提供不同的实作 即使某些实作版本中真的有'\0'在那个位置 也不该期待在那个地方永远会有结尾字元 这会降低程式码的可携性 请参考 string 的 member function c_str() 还有 data() 和 operator[] http://www.cplusplus.com/reference/string/string/operator[]/ --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.247.241
1F:推 wmin0:有道理 10/28 09:48
3F:→ wmin0:这个似乎保险一点 10/28 09:52
at() 函式确保了安全,但是也牺牲了效率 operator[] 里面不检查范围的原因就是为了速度! 确保范围的责任就交给程式设计师了
4F:推 vuluy:可是at丢出的exception是什麽意思呢,是会终止程式吗?? 10/28 09:57
例外处理(exception)是为了处理非正常程序执行时会遇到的状况 典型的例子就是"除以零例外"(DevideByZeroException) 不过他不是预设的例外之一XD 例外处理将在做适当处理後 1.继续执行(fault-tolerant) 或 2.终止程式(gracefully degrade) 而不是不负责任的直接呼叫abort()留下烂摊给OS收拾 详情请参考蚂蚁书 exception 章节
5F:推 djshen:把string的字尾改掉 cout string的话会是原本的 但是 10/28 09:57
6F:→ djshen:data()就会连後面的一起印出来 10/28 09:58
尝试印出未定义记忆体空间是非法的行为 这就像是故意开一个未以'\0'结尾的字元字串 然後印出一样 而前面第一个状况是因为 string 内部可以用别的变数来记录size 如此一来就不需要用到结尾字元来表示字串的结束
7F:→ djshen:at如果超过范围好像会直接停止耶@@ 10/28 10:11
※ 编辑: gamerred 来自: 140.112.247.241 (10/28 13:20) ※ 编辑: gamerred 来自: 140.112.247.241 (10/28 13:22)
8F:→ djshen:我也是想说用size来看 10/28 13:44
9F:→ djshen:string好像会在後面多留一点空间 所以改那个空间里的东西 10/28 18:48
10F:→ djshen:然後用data()去access应该不算是去动到未定义空间吧? 10/28 18:50
11F:→ djshen:不过印出string是由size控制而不是'\0'是可以确定的@@ 10/28 18:56
12F:推 ric2k1:Very good point! I should have used s2.size() instead 10/28 19:09
13F:→ ric2k1:of s2[i] to check string end. Will correct this in 10/28 19:09
14F:→ ric2k1:future homework. 这个作业应该没有影响。 10/28 19:10
15F:→ djshen:发现有些状况的确会有非法存取的问题.. 10/28 19:46







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP