char8_t
在C ++ 20中解决了char
的一些问题,因此我正在考虑对utf8文本(例如,命令行中的文本)使用char8_t
而不是char
。但是后来我注意到strlen
没有在要与char8_t
一起使用的标准中指定,实际上cstring库中没有任何函数。我可以期望在下一个标准更新中发生这种情况吗?还是char8_t
从未打算按照我的想法替换char
?
这些建议的目的是引入char8_t
类型,并提供与char16_t
和char32_t
相同的支持水平,然后在以后跟进附加功能。这些建议在C ++ 20开发周期的后期(分别在圣地亚哥和科隆会议上)被采用,因此没有机会为C ++ 20提供其他功能。
SG16中描述的P1238指令之一是标准化新的可识别编码的文本容器和视图类型。这方面的工作正在进展中,我们希望将其用于C ++ 23。希望这些新的容器和视图将取代C ++中的许多原始字符串处理。
[关于strlen
,具体来说,strlen
是C API。 N2231是向C添加char8_t
支持的建议(同样,该级别与char16_t
和char32_t
的现有支持相同)。该建议尚未被WG14接受。假设它最终被接受,那么继续使用其他基于char8_t
的C字符串管理功能(也许也增强对char16_t
和char32_t
的支持)将是有意义的。
[目前,我正在努力在gcc和glibc中完成N2231的实现。完成后,我打算将N2231的修订版提交给WG14。
您可以提供帮助! SG16是一个开放组。请随时订阅我们的邮件列表,在Slack上加入我们,分享您的想法,需求和需求,并撰写有关新功能的建议(我们可以为您提供帮助)。
这些新的char类型旨在使用C ++字符串模板std::basic_string
,即定义std::u8string
。因此,最好的情况是使用C ++字符串。
char8_t
用于UTF-8编码的字符串。这样,使用它们的API将由用户assumed