在将来的C ++版本中,我们会得到一个size_t strlen(const char8_t *)

问题描述 投票:0回答:3

char8_t在C ++ 20中解决了char的一些问题,因此我正在考虑对utf8文本(例如,命令行中的文本)使用char8_t而不是char。但是后来我注意到strlen没有在要与char8_t一起使用的标准中指定,实际上cstring库中没有任何函数。我可以期望在下一个标准更新中发生这种情况吗?还是char8_t从未打算按照我的想法替换char

c++ c-strings strlen char8-t
3个回答
2
投票

我是P0482P1423 char8_t提案的作者。

这些建议的目的是引入char8_t类型,并提供与char16_tchar32_t相同的支持水平,然后在以后跟进附加功能。这些建议在C ++ 20开发周期的后期(分别在圣地亚哥和科隆会议上)被采用,因此没有机会为C ++ 20提供其他功能。

SG16中描述的P1238指令之一是标准化新的可识别编码的文本容器和视图类型。这方面的工作正在进展中,我们希望将其用于C ++ 23。希望这些新的容器和视图将取代C ++中的许多原始字符串处理。

[关于strlen,具体来说,strlen是C API。 N2231是向C添加char8_t支持的建议(同样,该级别与char16_tchar32_t的现有支持相同)。该建议尚未被WG14接受。假设它最终被接受,那么继续使用其他基于char8_t的C字符串管理功能(也许也增强对char16_tchar32_t的支持)将是有意义的。

[目前,我正在努力在gcc和glibc中完成N2231的实现。完成后,我打算将N2231的修订版提交给WG14。

您可以提供帮助! SG16是一个开放组。请随时订阅我们的邮件列表,在Slack上加入我们,分享您的想法,需求和需求,并撰写有关新功能的建议(我们可以为您提供帮助)。


0
投票

这些新的char类型旨在使用C ++字符串模板std::basic_string,即定义std::u8string。因此,最好的情况是使用C ++字符串。


0
投票

char8_t用于UTF-8编码的字符串。这样,使用它们的API将由用户assumed

© www.soinside.com 2019 - 2024. All rights reserved.