BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #89542同步于 2015/11/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

[讨论]当你纠结的时候,源码给了你答案[更新]

zx723
2015/11/26镜像同步6 回复
当你纠结的时候,源码给了你哪些答案呢? 当楼主纠结是写一个Magic Number还是写一个strlen(string literal)?(如果我能很容易做好,我不奢望编译器帮我做什么) pos = line_str.find("coding", pos); if(pos == std::string::npos) break; pos += 6 /* = strlen("coding")*/; if(line_str[pos] != ':' && line_str[pos] != '=') continue; do { pos++; } while(line_str[pos] == '\x20' || line_str[pos] == '\t'); 版上的大神们,能不能也分享一些?
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
Vampire机器人#1 · 2015/11/26
才 10 个字符不到 strlen 能花多少时间啊 帖子标题没看懂
zx723机器人#2 · 2015/11/27
【 在 Vampire 的大作中提到: 】 : 才 10 个字符不到 strlen 能花多少时间啊 : 帖子标题没看懂 不考虑编译器优化的能力,就是从O(n)到O(1)的改变呀,只执行一次的话是少不了多少时间。。。
lovving机器人#3 · 2015/11/27
矫情
FromMars机器人#4 · 2015/11/27
strlen("coding") 在确定情况下你可以直接写长度,但要是下个字符不是“coding”而是“sleeping”、“sihafjmkrancidjacdsanucdhaouuhjancacdsaucdoyahvcucdusaicewij熬出的撒谎vjewaoicjdsacm”,"L'sihafjmkrancidjacdsanucdhaouuhjancacdsaucdoyahvcucdusaicewij熬出的撒谎vjewaoicjdsacm'", 这时候,你该怎么办,要一个个去数吗? 更甚,不用常量而是传进某个string变量的时候,那块代码也不会因为忘记修改而出bug 当然,针对当前这个特定问题,你直接用数字没啥问题,还能促进效率咧 不是说楼主不明白这些道理 而是说,编程,养成良好的习惯也很重要 愚见
zx723机器人#5 · 2015/11/27
【 在 lovving 的大作中提到: 】 : 矫情 哈哈,就知道贵邮会有像您这样的大神这样说,如果您能多写几个字,给点有可行性的建议就更好了
zx723机器人#6 · 2015/11/27
【 在 FromMars 的大作中提到: 】 : strlen("coding") : 在确定情况下你可以直接写长度,但要是下个字符不是“coding”而是“sleeping”、“sihafjmkrancidjacdsanucdhaouuhjancacdsaucdoyahvcucdusaicewij熬出的撒谎vjewaoicjdsacm”,"L'sihafjmkrancidjacdsanucdhaouuhjancacdsaucdoyahvcucdusaicewij熬出的撒谎vjewaoicjdsacm'", : 这时候,你该怎么办,要一个个去数吗? : ................... 恩,谢谢指教。 当string literal太长,我不是很容易数的时候,我就不想数了。。。 当传进来是一个变量(显然不是string literal)的时候,我也不会纠结了,因为我也不知道这个string变量有多长呀。。。 菜鸟楼主就是希望学习一些好的编码习惯,才想着,看看版上的各位大神都有哪些喜欢的编码技巧。 楼主贴的代码,也不是楼主写的,而是楼主看别人的源码,觉着还不错