[入门] 有没有人愿意加入 dotmars 的开发
oldrev
2007-05-10
both
|
|
oldrev
2007-05-10
之所以一直没搞字符串处理部分我就是在考虑是不是把字符串算法实现成模板
|
|
Colorful
2007-05-10
我认为没有必要用模板来实现,我觉得把字符串作为基元类型来看待要更好些。
PS:我一直不明白为什么D的Object.toString()采用utf8,Unicode不是更好? Linux内核更加激进,直接用UCS-4. |
|
qiezi
2007-05-10
的确应该使用unicode,char[]应该只作为文件、网络等流设备使用的类型,特别是char[]在sort、reverse时都会转成dchar[]处理完成后再转回char[],比较低效,win(nt)/linux最新的版本内核应该都是使用unicode,已经没有必要再用char[]在内存中保存字符串了。
|
|
oldrev
2007-05-10
D采用utf-8应该是为了跨平台的考虑,unix-like 的平台基本上都是用utf-8,ucs-2 后来不也要变成 utf-16么。
|
|
qiezi
2007-05-10
windows使用的应该是双字节,linux使用四字节,D在字符串处理中以四字节为主,原因是四字节能容纳的字符范围更广,双字节仅能容纳unicode的一个平面(Basic Multilingual Plane)。至少在phobos中,dchar能得到更直接的支持。
|
|
oldrev
2007-05-10
qiezi 说的对,在对外接口上用 utf8,内部处理用 dchar
|
|
Colorful
2007-05-10
文件、网络等流设备使用的类型,D的意思是使用byte。
此外,ucs-2跟utf-16指的应该是同一个东西吧。 ucs-4,即utf-32虽然可以容纳更多字符,但同时也会占用更多存储空间,消耗更多资源。目前看来不太实用。 WindowsNT内核采用Unicode,即utf-16。Linux采用utf-32(UCS-4).由utf-16向utf-32转换的速度极快,只需要在高位添0即可。 综合来看,utf-16是个比较理想的折衷方案。 |
|
Colorful
2007-05-10
当然,在网络环境下,utf-16就显得过于笨重了。会有别的编码来代替。
|
|
oldrev
2007-05-10
utf-16不一定就是两个字节一个字符了呀
|