I could change it to do that probably, but my understanding of std::string (from which CString inherits) is that .append works in amortized constant time, the same way vectors work.  I haven't actually tested this, but I can't imagine a reason not to implement them that way.  I'll test it when I'm at home. 

It would also allow you to join collections of non-string types.  I had deliberately excluded this capability, but if it's desired then I see no reason not to include it.