Wielkość napisu jest ograniczona jedynie ilością pamięci dostępnej dla programu, jest to raczej ograniczenie systemu operacyjnego niż ograniczenie C++. Łańcuchy C++/C mają wartość NUL zakończoną, więc procedury łańcuchowe z radością przetworzą bardzo długie łańcuchy, dopóki nie znajdą wartości pustej.
W systemie Win32 maksymalna ilość pamięci dostępnej dla danych wynosi zwykle około 2 gigabajty.
Możesz odczytywać dowolnie duże ilości danych z gniazda, ale musisz mieć jakiś sposób na wytyczenie danych, które czytasz. Konieczny jest koniec znacznika rekordu lub długości rekordu, który czytasz, użyj go do przeanalizowania rekordów. Czy naprawdę chcesz odczytać dane w ciągu znaków? Co się dzieje, jeśli nie masz wystarczającej ilości wolnej pamięci do przechowywania danych w pamięci RAM? Podejrzewam, że istnieje lepszy sposób na przetwarzanie tych danych, ale nie wiem wystarczająco dużo o tym problemie.
Chociaż można wspomnieć, że w większości implementacji ten maksymalny rozmiar zasadniczo stanowi całą pamięć dostępną dla procesu. – Omnifarious
Kiedy zobaczyłem max_size, pomyliłem go z ustawieniem max_size przez użytkownika, więc nieco bardziej pomocnym jest zobaczenie go jako programu: http://stackoverflow.com/questions/1521281/what-are-the-stl -string-limits? rq = 1 – Nav