我理解String Builder类的动机,但所有语言都有一个吗?他们应该吗?我正在考虑PHP,Perl,Python和Ruby。我知道C#和Java。如果其他人不这样做,为什么不呢?他们没有遭受同样的实施问题吗?或者他们不关心?
答案 0 :(得分:7)
并非所有语言都有字符串构建器。
例如,C甚至没有字符串。
在C ++中,std :: strings是可变的 - 它们可以被更改,因此不需要单独的字符串构建器类。
在C#(和.NET的其余部分)中,字符串是不可变的 - 它们不能被更改,只能被替换。这导致了导致需要StringBuilder的问题。
从技术上讲,.NET字符串是假装为值类型的引用类型。这样做是为了使它们更像原生类型(int,float,decimal)。
答案 1 :(得分:0)
当字符串流存在时,字符串构建器不需要 - 类似文件的对象来构造字符串。
例如,Python有StringIO
:
from cStringIO import StringIO
sio = StringIO()
sio.write("Hello")
sio.write(" world!!")
sio.write(111)
sio.write('!')
print sio.getvalue()
Hello world!!111!
Ruby也有自己的StringIO。在C ++中,等价物是std::stringstream
。