mkdir -pv ~/submod cd ~/submod touch submod.cpp emacs submod.cpp #include <iostream>#include <fstream>#include <string.h>using namespace std ;void eroare(string cod){ cout << cod ; exit(0);}int transforma(std::ifstream *fsub1, std::ofstream *fsub2, int sec) { string cuvant, sicuv1, socuv1 ; int itime1=0, itime2=0 ; int pos1=0, pos2=0, pos3=0, pos4=0 ; char format[200] ; //citeste cuvant pana la sfarsit de fisier while(!fsub1->eof()) { //daca incepe cu { atunci *fsub1 >> cuvant ; if((pos1 = cuvant.find_first_of("{")) != -1) { //da //scoate intre primul { si }{ pos2 = cuvant.find_first_of("}"); if(pos2 == -1) continue ; sicuv1 = cuvant.substr(pos1+1, pos2) ; //transforma in int si aduna sec -> itime1 itime1 = atoi(sicuv1.c_str()) ; itime1 += sec ; //scoate intre primul }{ si ultimul } pos3 = cuvant.find_last_of("{"); if(pos3 == -1) continue ; pos4 = cuvant.find_last_of("}"); if(pos4 == -1) continue ; sicuv1 = cuvant.substr(pos3+1, pos4) ; //transforma in int si aduna sec -> itime2 itime2 = atoi(sicuv1.c_str()) ; itime2 += sec ; //scoate intre ultimul } si sfarsitul cuvantului //pune in sicuv1 sicuv1 = cuvant.substr(pos4+1) ; //formeaza sirul socuv1 = { + itime1 + }{ + itime2 + } + sicuv1 sprintf(format, "%c%d%s%d%c%s", '{',itime1, "}{", itime2, '}', sicuv1.c_str()) ; //scrie in fisierul fsub2 *fsub2 << endl ; *fsub2 << format << " " ; }//end if else { //nu //scrie cuvantul in fisierul fsub2 *fsub2 << cuvant << " " ; }//end else } //successful termination ; return 1 ;}int main(int a, char* b[]){ string sub1("subtitle_in.sub") ; string sub2("subtitle_out.sub") ; int sec =0; cout << "subtitrare defecta: *.sub #:" /*must remove after*/ << sub1 ; //cin >> sub1 ; cout << endl << \ "subtitrarea noua : *.sub #:" /*must remove after*/ << sub2 ; //cin >> sub2 ; cout << endl << \ "timp devansare (sec)#:" ; cin >> sec ; ifstream fsub1(sub1.c_str(), ios_base::in) ; if(fsub1 == NULL) eroare(string("eroare la deschiderea fisierului sursa")) ; ofstream fsub2(sub2.c_str(), ios_base::out) ; if(fsub2 == NULL) eroare(string("eroare la deschiderea fisierului destinatie")) ; //start the transformation of subtitle file if( transforma(&fsub1, &fsub2, sec) == 1) cout << endl << "transformation was successful" ; else cout << endl << "transformation was unsuccessful " << endl ; fsub1.close() ; fsub2.close() ; getchar() ; return 0 ; }//and mainMakefile touch Makefile emacs Makefile CPP = g++OFLAG = -o.SUFFIXES : .o .cpp .c.cpp.o : $(CPP) $(CPPFLAGS) -c $<.c.o : $(CPP) $(CPPFLAGS) -c $<all: \ submod test: all submod bugs: @echo No compiler bugs in this directory!submod: submod.o $(CPP) $(OFLAG) submod submod.osubmod.o: submod.cppHow it works: save submod.cpp save Makefile make copy you .sub subtitle into the same directory as subtitle_in.sub ./submod (type in the time offset in seconds) look for subtitle_out.sub |