Cześć,
Chcę napisać program, który w lini poleceń dostaje 2 argumenty. Nazwę pliku i wyraz który ma w pliku w odpowiednim miejscu umieścić. Np.
Cześć, mam na imię * .
program.exe plik.txt Zenon
Cześć, mam na imię Zenon .
Czyli z grubsza widać, w miejscu * wstawia podany wyraz.
Teraz tak, domyślam się, że trzeba wczytywać dane z pliku znak po znaku i porównywać z naszą "*".
Jak znajdę gwiazdkę to jak odczytać jej położenie?
Czy od razu przy wczytywaniu istnienie metoda która po znalezieniu * podmieni mi ją na inne dane czy muszę przechować gdzieś jej położenie, później otworzyć plik do zapisu i wtedy wstawić to co chcę?
Ok, skleiłem na szybko taki kod:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(int argc, char **argv){
string text = argv[1];
fstream fin(argv[2], ios_base::in|ios_base::out);
if(fin.is_open()){
char ch;
streampos pos;
while(fin >> noskipws >> ch){
if(ch == '*'){
//cout << "jest gwiazdka na pozycji: " << fin.tellp() << endl;
pos = fin.tellp();
fin.seekp(pos);
fin.write("Zenon", 5);
}
}
}else{
cout << "Can't to open file \n";
}
fin.close();
return 0;
}
Tylko tellp() zwraca mi nie to położenie którego oczekuję :/.