🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

9 total messages Started by Borneq Tue, 03 Jul 2018 17:17
Problem z std::istream
#309730
Author: Borneq
Date: Tue, 03 Jul 2018 17:17
6 lines
1182 bytes
Jeśli przeczytam ze strumienia do końca, nie daje się już cofnąć za 
pomocą seekg i przeczytać.
Trzeba zamykać strumień i tworzyć go na nowo, to nie tylko czasochłonne, 
ale muszę znać ścieżkę do pliku, nie można po prostu działać z 
procedurą, która ma ogólny strumień jako parametr.
Może jest jakiś inny strumień dostępny w c++ niż std::istream?
Re: Problem z std::istream
#309731
Author: bartekltg
Date: Wed, 04 Jul 2018 12:50
18 lines
1495 bytes
On 03.07.2018 19:17, Borneq wrote:
> Jeśli przeczytam ze strumienia do końca, nie daje się już cofnąć za 
> pomocą seekg i przeczytać.
> Trzeba zamykać strumień i tworzyć go na nowo, to nie tylko czasochłonne, 
> ale muszę znać ścieżkę do pliku, nie można po prostu działać z 
> procedurą, która ma ogólny strumień jako parametr.

A z czego czytasz?

Jak chcesz się cofnać np gdy twoim strumieniem jest cin?!

 > Może jest jakiś inny strumień dostępny w c++ niż std::istream?

Czy to pytanie sugeruje, że nie otworyułęś http://www.cplusplus.com
ani https://en.cppreference.com

pzdrt
bartekltg
Re: Problem z std::istream
#309732
Author: Bartłomiej Golenko
Date: Wed, 04 Jul 2018 13:45
11 lines
1402 bytes
Borneq <borneq@antyspam.hidden.pl> wrote:
> Jeśli przeczytam ze strumienia do końca, nie daje się już cofnąć za 
> pomocą seekg i przeczytać.
> Trzeba zamykać strumień i tworzyć go na nowo, to nie tylko czasochłonne, 
> ale muszę znać ścieżkę do pliku, nie można po prostu działać z 
> procedurą, która ma ogólny strumień jako parametr.
> Może jest jakiś inny strumień dostępny w c++ niż std::istream?

std::ifstream

B.
Re: Problem z std::istream
#309733
Author: Borneq
Date: Fri, 06 Jul 2018 14:28
8 lines
1279 bytes
W dniu 04.07.2018 o 15:45, Bartłomiej Golenko pisze:
> std::ifstream

Tak, ifstream tworzę a istream używam jako klasę bazową, bardziej 
ogólną. Ale ten problem występował nie jak przeczytałem wszystkie do 
końca, tylko "wyszedłem poza koniec" czyli zażądałem przeczytania 
większej ilości niż ma strumień. Gdy się pilnuję, to teraz nie ma tego 
błędu.
Re: Problem z std::istream
#309734
Author: Bartłomiej Golenko
Date: Fri, 06 Jul 2018 16:01
20 lines
1584 bytes
Borneq <borneq@antyspam.hidden.pl> wrote:
> W dniu 04.07.2018 o 15:45, Bartłomiej Golenko pisze:
>> std::ifstream
>
> Tak, ifstream tworzę a istream używam jako klasę bazową, bardziej 
> ogólną. Ale ten problem występował nie jak przeczytałem wszystkie do 
> końca, tylko "wyszedłem poza koniec" czyli zażądałem przeczytania 
> większej ilości niż ma strumień. Gdy się pilnuję, to teraz nie ma tego 
> błędu.

http://www.cplusplus.com/reference/istream/istream/seekg/

C++98:
If the eofbit flag is set before the call, the function fails (sets
failbit and returns).

C++11:
The function clears the eofbit flag, if set before the call.

B.
Re: Problem z std::istream
#309735
Author: Borneq
Date: Fri, 06 Jul 2018 19:42
10 lines
1329 bytes
W dniu 06.07.2018 o 18:01, Bartłomiej Golenko pisze:
> C++98:
> If the eofbit flag is set before the call, the function fails (sets
> failbit and returns).
> 
> C++11:
> The function clears the eofbit flag, if set before the call.

Czyli problem jest w C++98 a nie w C++11?
Ja używałem to w Visualu 2015, czy tam domyślnie ustawione jest C++14?
Re: Problem z std::istream
#309736
Author: bartekltg
Date: Fri, 06 Jul 2018 20:09
17 lines
1521 bytes
On 06.07.2018 21:42, Borneq wrote:
> W dniu 06.07.2018 o 18:01, Bartłomiej Golenko pisze:
>> C++98:
>> If the eofbit flag is set before the call, the function fails (sets
>> failbit and returns).
>>
>> C++11:
>> The function clears the eofbit flag, if set before the call.
> 
> Czyli problem jest w C++98 a nie w C++11?
> Ja używałem to w Visualu 2015, czy tam domyślnie ustawione jest C++14?

Pierwszy link z googla na [ seekg after eof] pisze, że można to obejść
wołając clear().

pzdr
bartekltg
Re: Problem z std::istream
#309737
Author: Borneq
Date: Fri, 06 Jul 2018 20:46
5 lines
1218 bytes
W dniu 06.07.2018 o 22:09, bartekltg pisze:
> Pierwszy link z googla na [ seekg after eof] pisze, że można to obejść
> wołając clear().

Dzięki, będzie na przyszłość.
Re: Problem z std::istream
#309738
Author: Bartłomiej Golenko
Date: Sat, 07 Jul 2018 11:06
15 lines
1471 bytes
Borneq <borneq@antyspam.hidden.pl> wrote:
> W dniu 06.07.2018 o 18:01, Bartłomiej Golenko pisze:
>> C++98:
>> If the eofbit flag is set before the call, the function fails (sets
>> failbit and returns).
>> 
>> C++11:
>> The function clears the eofbit flag, if set before the call.
>
> Czyli problem jest w C++98 a nie w C++11?
> Ja używałem to w Visualu 2015, czy tam domyślnie ustawione jest C++14?

Problem nie jest w c++98, problem jest w "nieczytaniu" dokumentacji ;)

BG
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads