• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Ograniczenie strumienia wejściowego w C++

VPS Starter Arubacloud
0 głosów
671 wizyt
pytanie zadane 10 listopada 2019 w C i C++ przez Arcywojak Początkujący (370 p.)
Witam, chce w C++ wczytać bardzo długi tekst, jednak nie mogę wpisać więcej niż około 509 znaków.

Czy da się jakoś ten limit ominać? Próbowałem z getline(cin, nazwa zmiennej).
komentarz 10 listopada 2019 przez tkz Nałogowiec (42,020 p.)
Pokaż kod. Pierwszy raz słyszę o takim limicie.
komentarz 10 listopada 2019 przez adrian17 Ekspert (349,240 p.)
I jak sprawdziłeś że akurat 509 znaków?

2 odpowiedzi

0 głosów
odpowiedź 11 listopada 2019 przez mmarszik Mądrala (7,390 p.)
Sprawdź kod blędu, może masz uszkodzone sektory na dysku?
0 głosów
odpowiedź 11 listopada 2019 przez Arcywojak Początkujący (370 p.)
#include <iostream>
using namespace std;
int main()
{
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(NULL);
    int k;
    string wyr;
    cin>>k;
    cin>>ws;
    for(int i=0; i<k; i++){
      getline(cin, wyr);
      cout<<wyr.length();
    }
    return 0;
}

Teraz mogę wpisać do getline'a  ciąg znaków o długosci max 509 (dłuższy tekst po prostu nie chce się wpisać).

Na przykład wklejam tekst o długości 1000 znaków, po czym tekst zostaje ucięty do 509 znaków i nie mogę wpisać więcej.

Bez linii :

 std::ios_base::sync_with_stdio(false);
    std::cin.tie(NULL);

Ten limit zostaje zwiększony do 4094.

komentarz 11 listopada 2019 przez MsMaciek123 Pasjonat (24,760 p.)
Ile ramu masz na komputerze?
komentarz 11 listopada 2019 przez Arcywojak Początkujący (370 p.)
8gb. Czy pamięć może mieć tu znaczenie?
komentarz 11 listopada 2019 przez tkz Nałogowiec (42,020 p.)

Na początku musisz zrozumieć jak działają dwie pierwsze linie, i dlaczego nie są Ci potrzebne.

https://stackoverflow.com/questions/31162367/significance-of-ios-basesync-with-stdiofalse-cin-tienull

Mama pytanie do 10 linii, co to?

 

komentarz 11 listopada 2019 przez Arcywojak Początkujący (370 p.)
Jest po to aby wyczyścić strumień wejście z '\n' (znaku nowej linii).
komentarz 11 listopada 2019 przez tkz Nałogowiec (42,020 p.)
std::cin.clear(); std::cin.ignore(); Przeczytaj co jest w linku.
komentarz 11 listopada 2019 przez Arcywojak Początkujący (370 p.)
Dzięki, zamieniłem, ale to nadal nie rozwiązuje mojego problemu z ograniczonym ciągiem znaków na wejściu. A u Ciebie też jest tego typu limit z  ograniczonym wprowadzeniem?

Podobne pytania

0 głosów
2 odpowiedzi 660 wizyt
0 głosów
3 odpowiedzi 992 wizyt
0 głosów
1 odpowiedź 1,163 wizyt
pytanie zadane 9 stycznia 2017 w C i C++ przez Seszele11 Początkujący (330 p.)

92,979 zapytań

141,941 odpowiedzi

321,185 komentarzy

62,305 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...