El tamaño de una cadena solo está limitado por la cantidad de memoria disponible para el programa, es más una limitación del sistema operativo que una limitación de C++. Las cadenas de C++/C tienen un final nulo, por lo que las rutinas de cadena procesarán cadenas extremadamente largas hasta que encuentren un nulo.
En Win32, la cantidad máxima de memoria disponible para datos es normalmente de 2 Gigs.
Puede leer arbitrariamente grandes cantidades de datos de un socket, pero debe tener alguna forma de delimitar los datos que está leyendo. Debe haber un final de marcador de registro o longitud asociado con los registros que está leyendo, así que úselo para analizar los registros. ¿Realmente quieres leer los datos en una cadena? ¿Qué sucede si no tienes suficiente memoria libre para guardar los datos en la memoria RAM? Sospecho que hay una manera más eficiente de manejar estos datos, pero no sé lo suficiente sobre el problema.
Aunque es posible que desee mencionar que en la mayoría de las implementaciones de este tamaño máximo constituye esencialmente toda la memoria disponible para el proceso. – Omnifarious
Cuando vi max_size, me confundió a ser el max_size ser establecido por el usuario, por lo que un poco más útil para ver como un programa: http://stackoverflow.com/questions/1521281/what-are-the-stl -string-limits? rq = 1 – Nav