代码之家  ›  专栏  ›  技术社区  ›  Mark Canlas

为什么不到处都有一个字符串生成器?

  •  2
  • Mark Canlas  · 技术社区  · 15 年前

    我有点理解字符串生成器类的动机,但是所有语言都有一个吗?他们应该吗?我特别考虑的是PHP、Perl、Python和Ruby。我知道C语言和JavaDO。如果其他人没有,为什么不呢?它们是否不存在相同的实现问题?或者他们不在乎?

    2 回复  |  直到 15 年前
        1
  •  7
  •   James Curran    15 年前

    并非所有语言都有字符串生成器。

    例如,C甚至没有字符串。

    在C++中,STD::string是可变的——它们可以被改变,因此不需要单独的字符串生成器类。

    在C(和.NET的其余部分)中,字符串是不可变的-它们不能更改,只能替换,这会导致问题导致需要使用StringBuilder。

    从技术上讲,.NET字符串是假装为值类型的引用类型。这样做是为了使它们的行为更像本地类型(int、float、decimal)。

        2
  •  0
  •   Maxim Razin    15 年前

    当字符串流存在时,字符串生成器中不需要使用类似文件的对象来构造字符串。

    例如,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也有自己的字符串。在C++中,等价的是 std::stringstream .

    推荐文章