我在這裏瀏覽了一些關於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