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

seekg() - problem z użyciem

Object Storage Arubacloud
0 głosów
325 wizyt
pytanie zadane 26 stycznia 2020 w C i C++ przez Agnes Użytkownik (990 p.)
Funkcja nie działa mimo załączenia biblioteki <fstream> w Visual Studio 2019. Da się to jakoś naprawić? Był komunikat o tym, że nie ma szablony klasy std::basic_istream, ale po dodaniu biblioteki <istream>, w której ta klasa jest zdefiniowana problem wciąż jest.

A może jest jakaś alternatywa dla tej funkcji?
komentarz 26 stycznia 2020 przez Agnes Użytkownik (990 p.)
W ten pierwszy sposób. No tak...Dzięki za pomoc
komentarz 26 stycznia 2020 przez tangarr Mędrzec (154,860 p.)
Pierwszy sposób nie ma sensu. Nawet gdyby taka funkcja istniała to skąd by miała wiedzieć, że ma użyć twojego strumienia?
komentarz 26 stycznia 2020 przez Agnes Użytkownik (990 p.)
Rzeczywiście nie ma. Przy okazji, ta funkcja przesuwa kursor w pliku o jeden bajt, czyli w praktyce o jeden znak, więcej jeśli chcę, żeby kursor znalazł się tuż przed następnym słowem to muszę to ustawić "ręcznie", czy jest też na to gotowa funkcja?
komentarz 26 stycznia 2020 przez tangarr Mędrzec (154,860 p.)
Nic takiego nie przychodzi mi na myśl. Jeżeli nie znasz struktury pliku to takie skakanie bez szklanej kuli wydaje mi się niemożliwe. Najlepiej czytać plik znak po znaku, aż znajdziesz ciekawy fragment. Jeżeli potrzebujesz pobrać aktualną pozycję w pliku użyj funkcji tellg http://www.cplusplus.com/reference/istream/istream/tellg/
komentarz 26 stycznia 2020 przez niezalogowany

@Agnes,
 a może jednak lepiej użyć getline (strumien, string, '$');

struct slowo{
string word;
}

istream & operator >> (istream & in, slowo & s){
getline(in,s.word,'$');
return in;
}

z pliku o treści:"wouwoio oiw  $biuhiuHIU  $AIOHHIAOHO A$ "

do word powinno wczytać 
obj slowo slowo1 // wouwoio oiw  
obj slowo slowo2 // biuhiuHIU  
obj slowo slowo3 // AIOHHIAOHO A

 

1 odpowiedź

+1 głos
odpowiedź 26 stycznia 2020 przez tangarr Mędrzec (154,860 p.)

Udało się nam znaleźć rozwiązanie w komentarzach pod pytaniem dlatego dla czystej formalności dodaję odpowiedź.
Żeby użyć funkcji seekg trzeba ją wywołać na obiekcie. Przykład:
 

#include <iostream>
#include <fstream>
  
int main() {
    std::fstream in;
    in.open("in1.txt");
    in.seekg(3, std::ios::cur);
    return 0;    
}

 

Podobne pytania

0 głosów
1 odpowiedź 314 wizyt
0 głosów
0 odpowiedzi 303 wizyt
0 głosów
1 odpowiedź 247 wizyt

92,576 zapytań

141,426 odpowiedzi

319,650 komentarzy

61,961 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...