我浏览了一些关于string::size_type
的线程,我根据C ++标准理解这个size_type
保证了所有字符串用法的足够分配。
我发现很难相信。如果我将 C ++ Primer 4th edition 的全文放入字符串怎么办?或者更糟糕的是,如果我将无限字符放入字符串中会怎样?我只是不明白它是如何处理的。
答案 0 :(得分:3)
string::size_type
保证足够大,以便当前实现支持的所有字符串 - 不是任何大小的任何字符串。如果您的实现支持的字符串最多为8 GB,size_type
可包含最多80亿的数字。
答案 1 :(得分:2)
它不能保证所有字符串使用的足够分配。恰恰相反:它限制了std::string
的最大长度。基本上,它是字符串实现用来保持自己长度的类型。这种限制有点人为:通常,size_type
足够大以容纳与进程的地址空间一样大的偏移量 - 当然,由于您永远不能将整个地址空间专用于单串。
(你实际上可以将C ++ Primer的全文放入字符串中。)