免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 三月廿七
打印 上一主题 下一主题

随手写个非递归枚举所有文件的程序, 大家评评 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2012-05-12 13:56 |只看该作者
char* 到 string的转换确实很快, 当我发现结果不对, 指针在同步修改的时候, 顺手就换成了 string
但是,我把 UNICODE 转成 char 确实花了很长时间, 这个你可以看看 ZipArchive,
你试试用 UNICODE 解析zip,在这里贴上源代码, 观众一看就明白

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
12 [报告]
发表于 2012-05-12 14:04 |只看该作者
三月廿七 发表于 2012-05-12 13:31
这段代码我在 vs2003、2005、2008里面跑的很正常, 并且经过强力测试
我不管他什么 char* / string,  A版/T版, 只要这段代码能够保证产品速度和质量,就是好代码

我也很好奇,你平时用的是什么编译器? 这点常识都没有


我平时用的编译器? msvc6,8,9,10, gcc3,4(子版本就不列了), clang2.9
但首选 —— 一般第1个用来编译代码的 —— 是 mingw 3.4.6。


至于常识,我不知道你指的什么。
是指"代码能够保证产品的产出速度和你所谓的质量就是好代码"? 这点常识我确实没有

还是指"T,A混用在03,05,08不出问题"?
至于这个常识我有没有嘛……  为什么我一开始要问你的首选编译器,并问是否是mingw或VC6? nketc已经懂了,不知道你懂了没?

VC6无论是命令行还是IDE都不会定义那个宏。而VC8命令行不会,但IDE(你运指如飞的那个VS+ViEmu哦!!!)默认会。

既然你在03,05,08里都跑得很正常,还经过强力测试:
1. 你用命令行编译的
2. 你用IDE编译的,但取消了默认带有的那个宏定义。如果是这两点,那我在这方面确实低估你了。
3. 你直接在其他人提供的改过这个设置的vcproj文件里的基础上继续修改以满足你的项目需要

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
13 [报告]
发表于 2012-05-12 14:08 |只看该作者
三月廿七 发表于 2012-05-12 13:56
char* 到 string的转换确实很快, 当我发现结果不对, 指针在同步修改的时候, 顺手就换成了 string

不知道如何吐槽。
哎,你就当作是STL搓吧


三月廿七 发表于 2012-05-12 13:29
2, 很多第三方库不支持 UNICODE, 如果想要集成第三方库,就得使用char
三月廿七 发表于 2012-05-12 13:56
但是,我把 UNICODE 转成 char 确实花了很长时间, 这个你可以看看 ZipArchive,
你试试用 UNICODE 解析zip,在这里贴上源代码, 观众一看就明白

OwnWaterloo 发表于 2012-05-12 13:50
回复 4# nketc

it's not  a problem有个前提,就是if you not define UNICODE。
如果用一致的,比如sprintf+FindFirstFileA,那正确性就与这个前提无关。

FindFirstFileA看到了吗?


至于观众一看就明白,那必须是。我不需要帖代码观众应该都明白了。

PS:欢迎你继续找各种excuse,反正丢的不是我的脸

论坛徽章:
0
14 [报告]
发表于 2012-05-12 14:11 |只看该作者
我真不太懂, 我不懂数据类型有什么好讨论的?
对就对, 不对就不对, 现在不是已经对了嘛,还有什么好纠缠的

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
15 [报告]
发表于 2012-05-12 14:12 |只看该作者
三月廿七 发表于 2012-05-12 14:11
我真不太懂, 我不懂数据类型有什么好讨论的?
对就对, 不对就不对, 现在不是已经对了嘛,还有什么好纠缠的


现在不是已经对了嘛???陈同学也不明白这个道理

论坛徽章:
0
16 [报告]
发表于 2012-05-12 14:14 |只看该作者
你不是以为我连 FindFirstFileA / FindFirstFileW 都不知道吧,

论坛徽章:
0
17 [报告]
发表于 2012-05-12 14:24 |只看该作者
我真觉得你太搞了, 我佩服的五体投地  
好吧, 我无知, 我承认错误

论坛徽章:
0
18 [报告]
发表于 2012-05-12 14:30 |只看该作者
这样吧

  1. namespace std
  2. {
  3. #ifdef _UNICODE
  4.     typedef wstring tstring;
  5. #else
  6.     typedef string tstring;
  7. #endif
  8. }
复制代码

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
19 [报告]
发表于 2012-05-12 14:32 |只看该作者
三月廿七 发表于 2012-05-12 14:14
你不是以为我连 FindFirstFileA / FindFirstFileW 都不知道吧,


我并不怀疑你知道"许多涉及字符的Windows API有两个版本实际版本,与一个宏版本"这回事。


我想指出的是:应该一致地使用。
如果用T版本的API,就应该用TCHAR,tcsXXX,以及basic_string<TCHAR>等等。
如果因为某些原因 —— 比如你提到的其他库不使用wchar_t —— 需要使用char,sprintf(就不吐槽缓冲区溢出了,前面AD已经说过了),就应该显式地用A版本
而关于这点,从前面的回复来看,你确实不知道。


你称这种混用为工业代码,一致为学术代码也无妨。你认为混用的代码质量没问题也无妨 —— 它目前确实没出问题。这应该与你产品至上的思想不冲突?
而我还想指出的是:忽视这种一致性总有一天会付出代价。
我在10楼已经举一个例子了。如果一直不重视这点,代码怎么死的都不知道。

论坛徽章:
0
20 [报告]
发表于 2012-05-12 14:46 |只看该作者
本帖最后由 三月廿七 于 2012-05-12 15:35 编辑

本来就只有 char/short, 你看微软都把这俩种数据类型折腾成什么样子,
简直就是面目全非, 这个平台下的代码, 我不求一致, 只求速度和质量,
他都能瞎JB折腾, 我为什么不能,
而且我也没有写 FindFileW,  又没有不一致,为什么总是说我代码不一致?让我很莫名其妙?
再说了, 不就是个 UNICODE 宏吗, 报个警告,顺手不就撤了 ?

忘了说了,  还有就是std::stack / std::string 我根本没指望他们能正常工作,
出乎意料的是,他们竟然能跑的很正常,窃喜

等哪天我换了 OpenGL, 才是讲代码一致性的时候
我不只一次的说过,微软的代码是狗屎, 我特别看不起windows程序员, 我喜欢 GTK,
好吧, 我也是追求一致的, 可是微软不让我追求啊,这他妈的如何是好嘛?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP