Cin - maksymalna długość łańcucha

0

Witam
Jaka jest maksymalna długość łańcucha możliwa do odczytania przez cin? Nigdzie nie mogę takiej znaleźć. Dokładnie chodzi mi o to że w przypadku takiego kodu:

string tekst;
cin >> tekst;

Jeżeli podam ciąg długości ok. 1000000 to program się zawiesza

Edit: Przepraszam, program zawiesza pętla:

string tekst;
cin >> tekst;
while (tekst.empty()==0)
{
tekst.erase(0,1);
}

Dlaczego tak się dzieje?

0

Zawiesza się? Sprawdzałeś debuggerem czy robi coś konkretnego?

while (tekst.empty()==0)

Weź mi wytłumacz co Ty tutaj za jaja odstawiasz - żeby otrzymać boola porównujesz boola z intem konwertowanym na boola? Czy nie chodziło Ci o '!text.empty()'?

Co do długości linii - jeżeli jakieś ograniczenie inne niż dostępna pamięć jest to jest ono zależne od implementacji.

0

a takie pod pytanko string może w c++ przechowywać 255 znaków jak w pascalu czy więcej?

0
Gelldur napisał(a)

a takie pod pytanko string może w c++ przechowywać 255 znaków jak w pascalu czy więcej?
Sprawdź.

0

nie moge :P nie mam żadnego kompilatora bo z komórki ciężko to spr ;P

0

Rzeczywiście chodzi o !tekst.empty() (program pisany na szybko)

PS. Dla długości 5000 znaków działa idealnie

0

<string> dynamicznie powiększa się w miarę potrzeb. Wiec ogranicza cię głównie dostępna pamięć.

0

Więc czemu to nie działa?

0

A może realokuje i tyle to zajmuje? Bozia debugger za grzechy zabrała? Nie możesz co iterację wypisywać powiedzmy numeru iteracji? Tyle czasu tu siedzisz i nie wiesz, że 'nie działa' nawet naszej wróżce nie starcza?

1 użytkowników online, w tym zalogowanych: 0, gości: 1