string :: size_type真的够大,可以容纳任何字符串吗?

时间:2011-04-03 13:33:19

标签: c++ string size-type

我浏览了一些关于string::size_type的线程,我根据C ++标准理解这个size_type保证了所有字符串用法的足够分配。

我发现很难相信。如果我将 C ++ Primer 4th edition 的全文放入字符串怎么办?或者更糟糕的是,如果我将无限字符放入字符串中会怎样?我只是不明白它是如何处理的。

2 个答案:

答案 0 :(得分:3)

string::size_type保证足够大,以便当前实现支持的所有字符串 - 不是任何大小的任何字符串。如果您的实现支持的字符串最多为8 GB,size_type可包含最多80亿的数字。

答案 1 :(得分:2)

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

(你实际上可以将C ++ Primer的全文放入字符串中。)