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

getline przy uzyciu fopen

Object Storage Arubacloud
0 głosów
260 wizyt
pytanie zadane 14 stycznia 2017 w C i C++ przez kroliczysyn Początkujący (390 p.)

Hej! 

Czy istnieje jakiś prosty sposób, aby przy użyciu funkcji fopen, użyć getline? Kompilatorowi wyskakuje błąd: no matching function for call to 'getline(FILE*&, std::strig). wrzucam fragment funkcji. używam bibliotek #include <iostream> #include <cstdlib> #include <cstdio> #include <ctime> #include <cstring> #include <fstream>

 

FILE * odczyt;
odczyt = fopen ("zmiana.txt","a+");
while(!feof(odczyt))
		{
        	getline(odczyt,linia);
        	cout<< linia << endl;
        	liczba_linii++;
    	}
    	cout<<liczba_linii<<endl;
    	odczyt.clear();
		odczyt.seekg(0, ios::beg);

 

2
komentarz 14 stycznia 2017 przez niezalogowany
getline jest tylko dla strumieni, dlaczego nie użyjesz normalnego fstream?
1
komentarz 14 stycznia 2017 przez draghan VIP (106,230 p.)
Popieram przedmówcę - skoro piszesz w C++, możesz użyć strumieni i wtedy Twój problem się rozwiązuje "sam".
komentarz 14 stycznia 2017 przez kroliczysyn Początkujący (390 p.)
w programie używam ifstream i ofstream, ale miałem problem, jeśli plik źródłowy usunąłem, więc chciałem zamienić ofstream na fopen z argumentem a+. Ale mój problem rozwiązałem wstawiając przed ifstream i ofstream fopen z argumentem a+ i zamykam fclose. Nie wiem, czy tak się robi poprawnie politycznie, ale wydaje mi się że to takie januszowe rozwiązanie (coś jak zamontować zderzak na opaski zaciskowe :P ). Ale dziękuję za odpowiedź, przynajmniej wiem, że takich cudów nie można robić! :)
komentarz 14 stycznia 2017 przez niezalogowany

w programie używam ifstream i ofstream, ale miałem problem, jeśli plik źródłowy usunąłem

Zupełnie nie zrozumiałem o co ci chodzi

więc chciałem zamienić ofstream na fopen z argumentem a+. Ale mój problem rozwiązałem wstawiając przed ifstream i ofstream fopen z argumentem a+ i zamykam fclose

a czytałeś dokumentację tych funkcji? Pomieszałeś je zupełnie...

  1. http://www.cplusplus.com/reference/cstdio/fopen/
  2. http://www.cplusplus.com/reference/fstream/fstream/

Piszesz w C++ a otworzyłeś plik sposobem zgodnym ze standardem C, tak to powinno wyglądać, łącznie z flagą "append"

std::fstream file;
file.open("path/to/file", std::ios::app | std::ios::in);

if(!file.is_open())
{
  std::cout << "cannot open file\n";
  return 1;
}

...

file.close();

 

komentarz 14 stycznia 2017 przez kroliczysyn Początkujący (390 p.)
Normalnie w programie używam funkcji ifstream odczyt.open("zmiana.txt", ios::in | ios::out); oraz ofstream zapis.open("zmiana.txt", ios::in | ios::out); Mój problem polegał na tym, że jeśli nie istniał plik txt to nie był tworzony (wiem, że błąd leży przy ofstream ios::in i ios::out [tzn nie powinno ich być]), ale bez tego dalsze funkcje nie działały. Więc zastanawiałem się czy ofstream zapis.open("zmiana.txt", ios::in | ios::out); mogłem zastąpić fopen z a+ (Później miałem problemy z wczytaniem linii tekstu, co zauważyli koledzy wyżej).

więc przed  ifstream odczyt.open("zmiana.txt", ios::in | ios::out); oraz ofstream zapis.open("zmiana.txt", ios::in | ios::out); wstawiłem sobie otwarcie pliku przez fopen z argumentem a+ i zamykam ten plik, żeby znowu go otworzyć ale inaczej.

Teraz tylko nurtuje mnie pytanie czy to co zrobiłem to jest napisane poprawnie politycznie, czy takie rozwiązanie byle jakie?

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
3 odpowiedzi 280 wizyt
pytanie zadane 20 marca 2017 w JavaScript przez Muhin Gaduła (4,120 p.)
–1 głos
1 odpowiedź 89 wizyt
pytanie zadane 3 grudnia 2016 w PHP przez Chess Szeryf (76,710 p.)
0 głosów
1 odpowiedź 942 wizyt
pytanie zadane 11 października 2015 w PHP przez Hubert Rzepinski Początkujący (380 p.)

92,568 zapytań

141,420 odpowiedzi

319,618 komentarzy

61,954 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!

...