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

Porównianie dwóch plików .txt - C++

Object Storage Arubacloud
+1 głos
474 wizyt
pytanie zadane 22 października 2021 w C i C++ przez Vifuso Nowicjusz (170 p.)

Witam, mam pewien problem. Ponieważ mam do zrobienia program. Który wczyta i porówna dwa pliki .txt. Linijka po linijce i wyświetli liczbę różnic jakie są w konkretnej linijce. Mam to być zrobione w klasie i metodach. Koncepcja na ten program jest taka, że jedna metoda wczytuje pliki, linijka po linijce; druga będzie zamieniała konkretne linijki (np. 1 linijka z test1.txt oraz 1 linijka z test2.txt) i porównywała oby dwie linijki, jeżeli będzie różnica w linijce to wyświetli ilość różnicy. Jestem bardziej początkującym, niż doświadczonym programistą i nie wiem jak mogę to wykonać. Szukałem porad w google i nic nie znalazłem.

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <conio.h>
using namespace std;

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

class program {
	public: 
		void wczytanie() {
			fstream odczyt;
            odczyt.open("test1.txt");
            string linia1;
            do {
                getline(odczyt, linia1);
                cout<<linia1<<endl;
            }
            while(linia1 != "");
            odczyt.close();
            cout<<"----------------------"<<endl;
            fstream odczyt1;
            odczyt1.open("test2.txt");
			string linia2;
			do {
                getline(odczyt1, linia2);
                cout<<linia2<<endl;
            }
            while(linia2 != "");
            odczyt1.close();
		}
		void zamiana() {
			
			//myslalem, zeby te wczytywanie zrobic w 
			//petli i dac warunki po czym by wyskakiwaly 
			//roznice
			
			//Compare(String, String)
			
		}
};

int main(int argc, char** argv) {
	program obiekt1;
	obiekt1.wczytanie();
	
	
   
	return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 22 października 2021 przez j23 Mędrzec (194,920 p.)

Kombinujesz trochę jak koń pod górę:

std::ifstream is1("A.txt");
std::ifstream is2("B.txt");
std::string line1, line2;

while (std::getline(is1, line1) && std::getline(is2, line2)) {
    // tu porównujesz line1 z line2 i wyświetlasz to, co masz wyświetlić.
}

 

komentarz 29 października 2021 przez Vifuso Nowicjusz (170 p.)

Działa wszystko. Mam tylko jeszcze problem, bo próbuje jeszcze dodać, aby wyświetlała się liczba linijek w której jest różnica. A jedyne co mi wychodzi to, zawsze [0].

int main(int argc, char** argv) {
	ifstream is1("A.txt");
	ifstream is2("B.txt");
	string line1, line2;
	
	for(int i=0; i<100; i++){
		//cout<<"["<<i<<"]"<<endl; 
		while (std::getline(is1, line1) && std::getline(is2, line2)) {
		
		if(line1.compare(line2) == 0) 
			cout<<"Identycznie"<<endl; 
             // cout<<"Linijki sa takie same"<<endl;
		else 
			cout<<"Roznice "<<endl;
		}
	}
		
		
	return 0;
}

 

komentarz 29 października 2021 przez j23 Mędrzec (194,920 p.)

No to zrób jakiś licznik i powiększaj go, gdy linie będą się różnić. Po koniec wyświetl jego  wartość.

Po co ta pętla for?

Podobne pytania

0 głosów
1 odpowiedź 1,162 wizyt
pytanie zadane 24 sierpnia 2017 w C i C++ przez Vendari Nowicjusz (150 p.)
0 głosów
5 odpowiedzi 1,854 wizyt

92,575 zapytań

141,424 odpowiedzi

319,649 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!

...