我在这里浏览了一些关于string::size_type
的主题,而且我明白,根据C++标准,这个size_type
可以为所有字符串的使用保证足够的分配。string :: size_type是否足够容纳任何字符串?
我只是觉得很难相信。如果我将C++ Primer第4版的全文写入字符串,该怎么办?或者更糟糕的是,如果我将无限字符放入字符串中呢?我只是不明白它是如何处理的。
我在这里浏览了一些关于string::size_type
的主题,而且我明白,根据C++标准,这个size_type
可以为所有字符串的使用保证足够的分配。string :: size_type是否足够容纳任何字符串?
我只是觉得很难相信。如果我将C++ Primer第4版的全文写入字符串,该怎么办?或者更糟糕的是,如果我将无限字符放入字符串中呢?我只是不明白它是如何处理的。
string::size_type
是保证足够大的所有字符串,目前实现支持 - 没有任何规模的字符串。如果您的实施支持直至例如8 GB,size_type
可以包含高达80亿的数字。
它不保证足够的分配所有字符串使用。恰恰相反:它限制std::string
的最大长度。基本上,它是字符串实现用来保存自己长度的类型。这个限制是有点虚假的:通常,size_type
足够大以保持与进程的地址空间一样大的偏移量 - 当然这是无法达到的,因为您永远无法将整个地址空间专用于单个字符串。
(你实际上可以把C++入门的全部文本转换成字符串。)
试图将无限数量的字符放入字符串的程序崩溃,错误代码为42。 – 2011-04-03 14:13:15