On 6/3/22 4:12 PM, IGotD- wrote:
>When it comes to strings? Depends what you are doing and how you are doing it. C++ made a strange decision to include the null terminator at the end of the strings even if it isn't really necessary. The result is that you cannot slice strings and can lead to unnecessary deep copies. In order avoid this C++ invented string_view and associated literals. Now you suddenly have two types of strings and if you make an API you might have to support both string and string_view. This is one of the crazy things with "modern C++". Still it is more user friendly than the old C library strings which also are prone to buffer overflows.
D in this case did the right choice not including the null terminator so that you can slice strings all you want and no extra string view.
D almost had 2 types for arrays, one that would allow resizing and another that would just be a slice.
The point was to solve the stomping problem. But we fixed it a different way.
Feast your eyes!
https://forum.dlang.org/post/h5nbj3$17is$1@digitalmars.com
-Steve