🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #291870

Re: Jakie są zasady pracy z stdin?

#291870
From: Jacek Marcin Jaw
Date: Thu, 21 Mar 2024 15:59
25 lines
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>