On 22.09.22 13:14, ag0aep6g wrote:
On 22.09.22 12:53, Salih Dincer wrote:
[...]
```d auto foo(string s) { string r; foreach(c; s) { if(c > 0) { r ~= c; } } return r; } ```
[...]
Here's a snippet that's a bit shorter than yours and doesn't copy the data:while (s.length > 0 && s[$ - 1] == '\0') { s = s[0 .. $ - 1]; } return s;But do you really want to allow embedded '\0's? I.e., should foo("foo\0bar\0") really resolve to "foo\0bar" and not "foo"?
Whoops. Your code actually turns "foo\0bar" into "foobar", removing the embedded '\0'. So my supposed alternative is wrong.
Still, you usually want to stop at the first '\0'.
