On Friday, 15 November 2013 at 22:26:20 UTC, Jacek Furmankiewicz
wrote:
Since D strings are immutable (like in most other languages),
string concatenation is usually pretty inefficient due to the
need to create a new copy of the string every time.
I presume string concatenation using the typical array syntax
can be optimized by the compiler to do all of this in one shot,
e..g
string newString = string1 ~ string2 ~ string3;
but what happens if I need to concatenante a large string in a
loop?
I tried looking through Phobos for a StringBuilder class (since
that is the common solution in Java and C#), but did not find
anything similar.
What is the D way of doing efficient string concatenation
(especially if it spans multiple statements, e.g. while in a
loop)?
Appender in std.array is probably what you are looking for.
std.algorithm.joiner is also useful (no allocations at all even)
but the use case is a bit different.