Сколько «данных» вы можете поместить в строку? - PullRequest
1 голос
/ 02 мая 2011

Как программисты, мы много работаем со строками. Большую часть времени я использую их, не думая о них слишком много. В последнее время я без проблем использую строки для возврата большого количества информации из функции. Мой последний пример - двоичное дерево с 10-ю тысячами записей. У меня есть рекурсивная функция, которая просто продолжает добавлять в строку символ новой строки в конце. Эта функция не доставляла хлопот.

Так есть ли какое-либо ограничение на количество символов, которое вы можете поместить в строку, или вы ограничены только объемом доступной памяти?

Ответы [ 3 ]

5 голосов
/ 02 мая 2011

Реальное ограничение на размер, которого может достичь строковый объект, возвращается членом max_size.

из http://www.cplusplus.com/reference/string/string/capacity/

ссылки, специфичной для max_size: http://www.cplusplus.com/reference/string/string/max_size/

Так что да, это зависит от реализации.

2 голосов
/ 02 мая 2011

Нет, единственное ограничение - доступная непрерывная память. Нет никаких искусственных ограничений на длину строки; длина строки хранится в переменной size_t, максимальное значение которой является самым большим адресуемым байтом в системе (будь то 8, 16, 32 или 64 бита или что-либо еще).

0 голосов
/ 02 мая 2011

Он очень большой, но не безграничный.Вы можете использовать string::max_size, чтобы вернуть максимальное количество символов, которое может содержать строковый объект.Обратите внимание, что возвращаемое значение может варьироваться от системы к системе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...