2011-04-03 77 views
1

我在这里浏览了一些关于string::size_type的主题,而且我明白,根据C++标准,这个size_type可以为所有字符串的使用保证足够的分配。string :: size_type是否足够容纳任何字符串?

我只是觉得很难相信。如果我将C++ Primer第4版的全文写入字符串,该怎么办?或者更糟糕的是,如果我将无限字符放入字符串中呢?我只是不明白它是如何处理的。

+3

试图将无限数量的字符放入字符串的程序崩溃,错误代码为42。 – 2011-04-03 14:13:15

回答

3

string::size_type是保证足够大的所有字符串,目前实现支持 - 没有任何规模的字符串。如果您的实施支持直至例如8 GB,size_type可以包含高达80亿的数字。

2

它不保证足够的分配所有字符串使用。恰恰相反:它限制std::string的最大长度。基本上,它是字符串实现用来保存自己长度的类型。这个限制是有点虚假的:通常,size_type足够大以保持与进程的地址空间一样大的偏移量 - 当然这是无法达到的,因为您永远无法将整个地址空间专用于单个字符串。

(你实际上可以把C++入门的全部文本转换成字符串。)

相关问题