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

Wczytanie, wpisanie i zapisanie - Metody C++

VPS Starter Arubacloud
0 głosów
307 wizyt
pytanie zadane 21 października 2021 w C i C++ przez Vifuso Nowicjusz (170 p.)

Witam, przychodzę z kolejnym pytaniem. Czy da się zrobić aby tekst który już jest w pliku nie został "usunięcy" czy zamieniony ? Przykładowo w pliku jest pytanie: "Jak sie czujesz ?", odpowiadam: "a dobrze" i pytanie jest zastępowane odpowiedzią. Macie jakieś porady ? Ponieważ szukałem porad w internecie i nie znalazłem niczego co odpowiedziało by na moje pytanie.

Kod wygląda następująco. 

#include <iostream>
#include <ostream>
#include <fstream>
#include <string>
using namespace std;
 
class zadanie {
    public: 
        void odczyt() {
            fstream odczyt;
            odczyt.open("plik.txt");
             
            string linia;
            do {
                getline(odczyt, linia);
                cout<<linia<<endl;
            }
            while(linia != "");
             
            odczyt.close();
                         
        }
        void zmiany() {
            ofstream plik("plik.txt");
            string x;
            cin>>x;   
            plik<<x<<endl;
            plik.close();
        }
        void zapis() {
            cout<<"--------------"<<endl;
            cout<<"Po zapisie zmianie zostalo: "<<endl;
            cout<<"--------------"<<endl;
            fstream odczyt;
            odczyt.open("plik.txt");
              
            string linia;
            do {
                getline(odczyt, linia);
                cout<<linia<<endl;
            }
            while(linia != "");
              
            odczyt.close();
        }
};
int main(int argc, char** argv) {
    zadanie obiekt1;
    obiekt1.odczyt();
     
    zadanie obiekt2;
    obiekt2.zmiany();
     
    zadanie obiekt3;
    obiekt3.zapis();
    return 0;
}

 

1 odpowiedź

+1 głos
odpowiedź 21 października 2021 przez j23 Mędrzec (195,220 p.)

Przepisz plik dokonując podmiany/usunięcia odpowiedniej linii tekstu.


            do {
                getline(odczyt, linia);
                cout<<linia<<endl;
            }
            while(linia != "");

Zrób to po ludzku:

while(getline(odczyt, linia)) {
    cout << linia << '\n';
}

Jeśli używasz strumienia tylko do odczytu czy zapisu, używaj odpowiednio std::ifstream lub std::ofstream.

komentarz 22 października 2021 przez Vifuso Nowicjusz (170 p.)
Zrobiłem jak radziłeś, jednak po wpisaniu tego nie pojawia mi się nic. Więc nie wiem. A co mogę zrobić aby tekst nie był zastępowany ?
komentarz 22 października 2021 przez j23 Mędrzec (195,220 p.)
Pokaż kod.
komentarz 22 października 2021 przez Vifuso Nowicjusz (170 p.)

Źle sprawdziłem, już się wyświetla. Tylko dalej nie umiem zrobić, tego aby się to nie usuwało.

#include <iostream>
#include <ostream>
#include <fstream>
#include <string>
using namespace std;



class zadanie {
	public: 
		void odczyt() {
			//string z,z1,z2,z3,z4;
			//cin>>z;
			//cout<<"wybierz plik: "<<endl;
			fstream odczyt;
			odczyt.open("plik.txt");
			
			string linia;
			while(getline(odczyt, linia)) {
    			cout << linia << '\n';
			}
			odczyt.close();
						
		}
		void zmiany() {
			ofstream plik("plik.txt");
			string x,x1,x2,x3,x4; //pszystosawanie do tekstu zlozonego x kilku slow
			cin>>x>>x1>>x2;	
			plik<<x<<" "<<x1<<" "<<x2<<" "<<x3<<" "<<x4<<endl;
			plik.close();
		}
		void zapis() {
			cout<<"--------------"<<endl;
			cout<<"Po zapisie zmianie zostalo: "<<endl;
            cout<<"--------------"<<endl;
			fstream odczyt;
            odczyt.open("plik.txt");
             
            string linia;
            while(getline(odczyt, linia)) {
    			cout << linia << '\n';
			}
             
            odczyt.close();
        }
};
int main(int argc, char** argv) {
	zadanie obiekt1;
	obiekt1.odczyt();
	
	zadanie obiekt2;
	obiekt2.zmiany();
	
	zadanie obiekt3;
	obiekt3.zapis();
	return 0;
} 

 

komentarz 22 października 2021 przez j23 Mędrzec (195,220 p.)

Przecież napisałem, co powinieneś zrobić.

W pętli:

  1. czytasz linię z pliku A.
  2. sprawdzasz, czy linia powinna znaleźć się w pliku B. jeśli nie, skaczesz do 1 (continue).
  3. zapisujesz linię do pliku B (pamiętaj o dodaniu '\n' na końcu).
  4. skok do 1.

Prościej się nie da.

Podobne pytania

0 głosów
0 odpowiedzi 327 wizyt
0 głosów
1 odpowiedź 353 wizyt
0 głosów
1 odpowiedź 571 wizyt

92,775 zapytań

141,703 odpowiedzi

320,570 komentarzy

62,109 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

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!

...