🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Piaskownica

#309990
From: Wojciech Muła
Date: Fri, 17 Jan 2020 10:13
152 lines
4818 bytes
On Thursday, January 16, 2020 at 6:06:44 PM UTC+1, M.M. wrote:
> On Thursday, January 16, 2020 at 1:01:09 PM UTC+1, herjohn wrote:
> > W dniu 2019-12-12 o 23:54, M.M. pisze:
> > > Nie przewijajcie na dół, tam jest rozwiązanie:
> > > 
> > > Zawsze byłem słaby z biblioteki standardowej w C++, programowałem w innych.
> > > Nie mogłem znaleźć błędu w poniższych kilku wierszach, pewnie wy znajdziecie.
> > > Jako pierwszy wiersz na standardowe wejście podajemy liczby np. 1 i 2. Jako
> > > drugi podajemy np.: 3 i 4. Program dwa razy robi to samo, wczytuje wiersz,
> > > tworzy strumień tekstowy i ze strumienia odczytuje do zmiennych x i y. Choć
> > > dwa razy robi to samo, to drugi raz nie działa prawidłowo. Straciłem z
> > > godzinę czasu żeby to wygrzebać z większego programu, zdiagnozować i poprawić :)
> > > Biblioteki trzeba znać :/
> > > 
> > > #include <iostream>
> > > #include <sstream>
> > > 
> > > int main() {
> > >      std::string str;
> > >      std::istringstream ss;
> > >      double x, y;
> > > 
> > >      std::getline( std::cin , str );
> > >      std::cout << "String: '" << str << "'" << std::endl;
> > >      ss.str( str );
> > >      ss >> x >> y;
> > >      std::cout << x << std::endl;
> > >      std::cout << y << std::endl;
> > > 
> > >      std::getline( std::cin , str );
> > >      std::cout << "String: '" << str << "'" << std::endl;
> > >      ss.str( str );
> > >      ss >> x >> y;
> > >      std::cout << x << std::endl;
> > >      std::cout << y << std::endl;
> > > 
> > >      return 0;
> > > }
> > > 
> > > 
> > > Pozdrawiam
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > ------------------------------------------------------------
> > > Odpowiedź:
> > > 
> > > ss.str( str );
> > > nie resetuje pozycji, trzeba wywołać jeszcze:
> > > ss.seekg(0);
> > > 
> > 
> > 
> > a nie chodzi o to, że po pierwszej operacji
> > ss >> x >> y;
> > zostają ustawione bity eof, fail i bad, które trzeba wyzerować 
> > instrukcją ss.clear()?
> 
> Prawdę powiedziawszy nie wiem, ale po seekg działa bez zarzutu.
> 
> Pozdrawiam
> 
> P.S.
> Przyjąłem sobie za punkt honoru pewne autonomiczne fragmenty kodu
> (coś ala biblioteki) pisać tylko z użyciem biblioteki standardowej i 
> żałuję tego. Na co dzień piszę w QT, wygoda jaką dostarcza QT 
> na każdym kroku jest nieoceniona.

Streamy C++ to jest porażka, modelowy przykład jak nie należy
projektować API. Nie mówiąc o tym, że są wolne. Po prostu używać
gdzie trzeba, z własnej woli nie dotykać nawet kijem.

PS. To, że coś jest w standardzie, nie oznacza, że jest dobre.
Znaczy jedynie tyle, że zostało przegłosowane.

w.
Technical Details
Message-ID: <fe6db6ab-1658-47cd-bb64-a12c75898f94@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!feeder1.feed.usenet.farm!feed.usenet.farm!feeder.usenetexpress.com!tr3.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!g89no5729061qtd.0!news-out.google.com!w29ni1507qtc.0!nntp.google.com!g89no5729056qtd.0!postnews.google.com!google-groups.googlegroups.com!not-for-mail
References: <4596f312-bb20-4ac0-ac42-015128f3dfdd@googlegroups.com> <qvpja2$6vr$1@gioia.aioe.org> <c3a1e800-22c2-4acd-ae08-4294996e46c3@googlegroups.com>

Show Full Headers
Complete Article Headers
X-Received: by 2002:a05:6214:1428:: with SMTP id o8mr7122001qvx.87.1579255988010; Fri, 17 Jan 2020 02:13:08 -0800 (PST)
X-Received: by 2002:a05:6902:6a5:: with SMTP id j5mr29673708ybt.462.1579255987774; Fri, 17 Jan 2020 02:13:07 -0800 (PST)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!feeder1.feed.usenet.farm!feed.usenet.farm!feeder.usenetexpress.com!tr3.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!g89no5729061qtd.0!news-out.google.com!w29ni1507qtc.0!nntp.google.com!g89no5729056qtd.0!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.c
Date: Fri, 17 Jan 2020 02:13:07 -0800 (PST)
In-Reply-To: <c3a1e800-22c2-4acd-ae08-4294996e46c3@googlegroups.com>
Complaints-To: groups-abuse@google.com
Injection-Info: google-groups.googlegroups.com; posting-host=131.228.32.166; posting-account=VFwkXwoAAADdT4-lLKRZrMYkTjizGoyn
NNTP-Posting-Host: 131.228.32.166
References: <4596f312-bb20-4ac0-ac42-015128f3dfdd@googlegroups.com> <qvpja2$6vr$1@gioia.aioe.org> <c3a1e800-22c2-4acd-ae08-4294996e46c3@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <fe6db6ab-1658-47cd-bb64-a12c75898f94@googlegroups.com>
Subject: Re: Piaskownica
From: Wojciech Muła <wojciech_mula@poczta.onet.pl>
Injection-Date: Fri, 17 Jan 2020 10:13:08 +0000
Lines: 165
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit