Article View: pl.comp.lang.c
Article #291870Re: Jakie są zasady pracy z stdin?
From: Jacek Marcin Jaw
Date: Thu, 21 Mar 2024 15:59
Date: Thu, 21 Mar 2024 15:59
25 lines
1171 bytes
1171 bytes
W dniu 20.03.2024 o 22:22, heby pisze: > On 20/03/2024 21:35, Jacek Marcin Jaworski wrote: >> Jednak mi chodzi o prosty przypadek gdy mam kilka linii do odczytania >> z stdin i wtedy read((long long) 2*1024*1024*1024) nic nie zwraca > > Może zgaduje, że rozmiar stringa będzie przekroczony. Dla mniejszych > buforów zadziała? Dla mniejszych buforów działa! Jednorazowo z stdin można maks. odczytać 2GB: QString lWszytko = QTextStream(stdin).read((long long) 2 * 1024 * 1024 * 1024 - 1); Zmyliła mnie błędna dok. f. QString QTextStream::read(qint64 maxlen). Ona zwraca QString który ma operator[](int) oraz operator[](unsigned int). Tak więc teoretycznie QString powinien mieć maks. dł. 4GB (unsigned int). Jednak z jakiegoś powodu QTextStream obsługuje maks. 2GB. Taka uwaga na koniec: Nie jest przypadkiem, że odczytuję za jednym zamachem całe stdin. Bo prog. konsoli zwane edytorami strumieniowymi mogą działać w 2 trybach: linijkowym i blokowym. W trybie linijkowym działa np. sed i grep i jest to problem gdy wzorzec ma parę linii. Natomiast w trybie blokowym działa np. sort i nie da się tego zmienić. Dzięki wielkie Heby!
Message-ID:
<uthi0u$d7v$1$Jaworski@news.chmurka.net>
Path:
polish.pugleaf.net!archive.newsdeef.eu!archive!mbox2nntp-news0158.bag!news.gallaxial.com!sewer!weretis.net!feeder8.news.weretis.net!news.chmurka.net!.POSTED.37.30.118.194!not-for-mail
References:
<utf2d8$ds6$1$Jaworski@news.chmurka.net> <utf8ag$1kcek$1@dont-email.me> <utfh9o$sph$1$Jaworski@news.chmurka.net> <utfk25$1nd1a$2@dont-email.me>