C++没有trim为什么不自己造一个呢?

 C++没有trim为什么不自己造一个呢?


省流:因为编码

C++的标准里面是没有现在语言中的字符串的。C++的string其实是字节数组,里面没有取第i个字符的功能,只有取第i个字节的功能。他不区分里面内容的编码,也不保证里面的内容一定是有效的编码。

最近很多小伙伴找我,说想要一些C++资料,然后我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「C++专业入门到高级教程+工具包」,点个关注,全部无偿共享给大家!!!

评论区回复“888”,关注我之后私信回复“666”,即可拿走。


而现代编程语言一般会区分字符串和字节数组。对于字符串,经过取舍发现还是按照变长编码比较好。Go和Rust的字符串是UTF-8变长编码,而Python设计得早一些加上是动态类型解释型语言,默认字符串存unicode,可以动态编码成其他编码的字符串。

由于C++的string在使用的时候,程序并不知道它的编码,所以并不存在一个一定正确的trim函数的实现。如果从前后分别一个字节一个字节的找直到遇到非空白符的ascii码,在ascii和utf8编码的字符串上是正确的,但是在utf16上就需要两个字节两个字节找了,而在其他编码下有可能会把某个字符的其中某个字节当成空白符从而导致bug。

由于C++标准里还没有很好的处理编码问题,所以trim函数还没法进入标准。C++没有trim为什么不自己造一个呢?_第1张图片

你可能感兴趣的:(单片机,编程,嵌入式,单片机,51单片机)