Die Größe eines Strings ist nur durch die Menge an Speicher begrenzt, die für das Programm verfügbar ist, es ist eher eine Betriebssystembeschränkung als eine C++ - Einschränkung. C++/C-Zeichenfolgen sind null-terminiert, so dass die Zeichenfolgenroutinen glücklich lange Zeichenfolgen verarbeiten, bis sie eine Null finden.
Auf Win32 ist die maximale verfügbare Speicherkapazität für Daten normalerweise um 2 Gigs.
Sie können beliebig große Datenmengen von einem Socket lesen, aber Sie müssen eine Möglichkeit haben, die Daten, die Sie gerade lesen, abzugrenzen. Es muss ein Ende der Datensatzmarkierung oder -länge geben, das mit den Datensätzen verknüpft ist, die Sie lesen. Verwenden Sie diese Informationen, um die Datensätze zu analysieren. Wollen Sie die Daten wirklich in eine Zeichenfolge einlesen? Was passiert, wenn Sie nicht genügend freien Speicher haben, um die Daten im RAM zu halten? Ich vermute, dass es einen effizienteren Weg gibt, mit diesen Daten umzugehen, aber ich weiß nicht genug über das Problem.
Obwohl Sie vielleicht erwähnen möchten, dass diese maximale Größe in den meisten Implementierungen im Wesentlichen den gesamten verfügbaren Speicher für den Prozess darstellt. – Omnifarious
Als ich Max_size sah, verwechselte ich es mit der vom Benutzer eingestellten max_size, also ein bisschen hilfreicher, es als ein Programm zu sehen: http://stackoverflow.com/questions/1521281/what-are-the-stl -string-limits? rq = 1 – Nav