为什么不存在字符串生成器?

时间:2010-08-12 19:05:55

标签: string language-agnostic

我理解String Builder类的动机,但所有语言都有一个吗?他们应该吗?我正在考虑PHP,Perl,Python和Ruby。我知道C#和Java。如果其他人不这样做,为什么不呢?他们没有遭受同样的实施问题吗?或者他们不关心?

2 个答案:

答案 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