#include <iostream>
#include <fstream>
#include <cstdlib>
#include <Windows.h>
using namespace std;
void zamiana(string linia, string szukaj, string zastap)
{
int dlugosc = zastap.length();
while(linia.find(szukaj)) // Pierwszy problem, jak petla ma sprawdzic czy w danej lini nie ma kolejnego ciągu znaków do zastapienia.
{
size_t pozycja = linia.find(szukaj);
linia.replace(pozycja, dlugosc, zastap);
}
}
char nazwaOdczyt, nazwaZapis;
string linia;
int main()
{
cout << "Podaj sciezke do odczytu: ";
cin >> nazwaOdczyt;
fstream plikOdczyt;
plikOdczyt.open(nazwaOdczyt, ios::in); //drugi problem, jak wczytac sciezke pliku. Obecny sposób nie działa
// ;( w tej wersji nawet nie chce się skąpilowac a jak się zmienina &nazwaOdczyt to się kompiluje ale nie działa poprawnie.
if(plikOdczyt.good()==false)
{
cout << "Nie można otworzyć pliku do odczytu!";
Sleep(2000);
return 0;
}
cout << "Podaj sciezke do zapisu: ";
cin >> nazwaZapis;
fstream plikZapis;
plikZapis.open(&nazwaZapis, ios::out | ios::app); // nadal drugi problem. Tak da się skompilować ale nie dziła poprawnie.
while(!plikOdczyt.eof())
{
getline(plikOdczyt, linia);
zamiana(linia, "??=", "#");
zamiana(linia, "??/", "\ ");
zamiana(linia, "??'", "^");
zamiana(linia, "??(", "[");
zamiana(linia, "??)", "]");
zamiana(linia, "??<", "{");
zamiana(linia, "??>", "}");
zamiana(linia, "??-", "~");
plikZapis << linia << endl;
}
plikOdczyt.close();
plikZapis.clear();
return 0;
}
A więc mam dwa problemy których nie mogę rozgryźć. Opisałem je w komentarzach kodu.
Pierwszy problem, jak pętla ma sprawdzić czy w danej linii nie ma kolejnego ciągu znaków do zastąpienia.
Drugi problem, jak wczytać ścieżkę pliku? Funkcja plik.open wymaga char. Jak próbuje z cin wczytać ciąg znaków char do zmiennej i chce żeby ta zmienna była parametrem to nie mogę kompilować. Chyba że gdzieś indziej popełniłem błąd.