- 主题:c++ 里怎么一致地处理unicode?
希望有大佬把 qtcore 拿出来,单独维护。
再加上我已经单独维护的 qtnetwork,在 cpp 界简直无敌。
【 在 z16166 的大作中提到: 】
: qt那一大坨,不是每个人都需要
--
修改:hgoldfish FROM 110.81.0.*
FROM 110.81.0.*
不要用标准库的string,好歹用个第三方的,如果开发环境没有,移植一个。
上一次调研的结论,std::string只是叫string,实际是vector<char>
【 在 finlab 的大作中提到: 】
: 是统一用string,还是wstring,还是u8 ,u16,u32这些?
: 以前用QString 可以统一处理,现在想改用标准库,不知道怎么好。
: 因为一旦选定了用哪种字符串类型,其他相关地接口中就都要用用同一种,
: ...................
--
FROM 117.39.234.*
以前用QString, 挺好用, 这不是想试试标准库嘛。
【 在 DoorWay 的大作中提到: 】
: 不要用标准库的string,好歹用个第三方的,如果开发环境没有,移植一个。
: 上一次调研的结论,std::string只是叫string,实际是vector<char>
--
FROM 123.112.71.*
std里的std::codecvt这些问题多,直接标记为deprecated,可以继续使用,只是编译有警告,一时半会儿也没好的标准出来。
【 在 finlab 的大作中提到: 】
: 以前用QString, 挺好用, 这不是想试试标准库嘛。
:
--
修改:z16166 FROM 114.241.225.*
FROM 114.241.225.*
其实缺的就是这个,最好有人能打包整理一个。可以尝试从G家(icu4c,absl),F家(Folly), Boost的开源库里面抽出来组织一个。其实主要是包装的工作,底层的实现应该还算相对完备,或者本版可以发起做一个开源项目。
记得本版以前有个帖子,一直坚持不懈给C++委员会提std::text提案的人维护了一个text库,功能特性都比较完善,也许能用于生产。
【 在 finlab 的大作中提到: 】
: 网上看到很多人推荐这种方式,但是很多字符串处理函数,就得自己来写
: 大家是自己写一个小库,还是有现成的?
:
--
FROM 222.129.52.*
【 在 finlab 的大作中提到: 】
: 是统一用string,还是wstring,还是u8 ,u16,u32这些?
: 以前用QString 可以统一处理,现在想改用标准库,不知道怎么好。
: 因为一旦选定了用哪种字符串类型,其他相关地接口中就都要用用同一种,
: ...................
这个问题怎么说呢? 首先你要明确好需求, 这种包括应用需求和平台需求,
最终还是需求和代价的折衷,utf8 很好,但是有些应用很麻烦, 32位很方便, 但是浪费空间,
windows内核需要来回转换。
平台差异, UNIX,LINUX上普遍吧wchar映射为32位,而windows平台映射到16位,
unix,linux的locale里面普遍有utf-8, windows里没有, 转码的时候,会有差异。
而应用需求,包括存储,显示,输入,转换等等。
utf8可以平台统一,没有LE,BE的麻烦,但是utf-8是变长字符存储, 需要字符长度敏感的地方,
则变得不方便, strlen只能表示存储空间,无法对应字符数量,远远不如wcslen来的方便。
utf-16存储其实也不能算是定长的,因为表示一些超出16位空间的字符编码需要使用代理表示,
这个时候是两个16位表示一个字符,本质上取长度也不能表示字符数量, 而LINUX,UNIX平台采用32位
则基本能解决这个问题, 遇到这种长度问题, 需要在应用设计的时候就进行考虑, 比如utf-8最长需要
4个字节表示一个字符, 如果设计上需要支持30个字符,存储留出至少120个字节空间(不含‘\0’), 显示的时候你也需要数出实际输入字符数, 否则, 虽然没填满空间,但屏幕已经无法显示多出的字符。
--
FROM 124.126.2.*
你qtng没公开了吗?
【 在 hgoldfish 的大作中提到: 】
: 标 题: Re: c++ 里怎么一致地处理unicode?
: 发信站: 水木社区 (Wed Feb 8 17:47:32 2023), 站内
:
: 希望有大佬把 qtcore 拿出来,单独维护。
:
: 再加上我已经单独维护的 qtnetwork,在 cpp 界简直无敌。
:
: 【 在 z16166 的大作中提到: 】
: : qt那一大坨,不是每个人都需要
:
: --
: 灭绝人性啊
:
:
: ※ 修改:·hgoldfish 于 Feb 8 17:47:43 2023 修改本文·[FROM: 110.81.0.*]
: ※ 来源:·水木社区 mysmth.net·[FROM: 110.81.0.*]
--
修改:hgoldfish FROM 110.81.0.*
FROM 116.234.206.*
一直都有啊。我这个 qtng 其实不止是 socket 功能,还收集了加密、网络常见处理工具类、PosixPath 之类的 linux 服务端后端常用的小工具。和 QtCore 搭配后用于后端开发可以部分代替 go 在服务端的角色。
https://github.com/hgoldfish/qtnetworkng/
【 在 giggham 的大作中提到: 】
: 你qtng没公开了吗?
--
FROM 110.81.1.*