Zamieszczam program, który zamienia kod napisany w C++/C do kodu html, efekt jak poniżej. W tym poście program będzie aktualizowany. Żeby użyć programu musimy go na początku skompilować, później gotowy program umieszczamy w katalogu z plikiem, który chcemy zamienić na html. Włączamy program i wpisujemy nazwę pliku z rozszerzeniem np. "main.cpp". Po tej operacji w katalogu z programem pokaże się nowy plik main.cpp.html. I to tyle:D
Program został napisany żeby wrzucać kod C++/C, na bloga w bardziej czytelny sposób.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 | /* * Autor: Vevensi, onidpl@gmail.com * Wersja Programu: 0.2.1v */ #include <iostream> #include <fstream> #include <cstring> using namespace std; int ilosc_lini(char[]); void zamien(std::string&); void koloruj(std::string&); int main(){ const int np = 20; //max důugoúă tekstu(nazwa pliku) char n_bgcolor[7] = "000000"; //kolor tůa numeracji char n_color[7] = "FFFFFF"; //kolor tekstu numeracji char bgcolor[7] = "000000"; //kolor tůa kodu char color[7] = "FFFFFF"; //kolor tekstu kodu //jest to program który bćdzie zamieniaă plik cpp na kod html który moýna //wrzuciă na stronć, póęniej zostanie moýliwoúă kolorowania skůadni i bćdzie //moýna wybraă czy linie majŕ byă ponumerowane czy nie //pierwszym krokiem jest zapytanie uýytkownika o nazwć pliku do otwarcia, //plik powinien byă w katalogu z programem //kolejny krok to odczytanie ile jest lini w programie i zapisanie tego do zmiennej //nastćpnie zacziemy od torzenie pliku html //pierw dodamy te poczŕtkowe znaczniki //póęniej numercaja a na końcu kaýdy wiersz bćdziemy odczytywany i zaisywany osobno //to do dzieůŕ //http://cpp0x.pl/kursy/Kurs-C++/Obsluga-plikow/305 ifstream plikcpp; //tworzymy nowŕ zmienna która nam posůuýy do operacji na pilku ofstream plikhtml; //plik kótry utworzymy i zapiszemy w nim gotowy kod programu char nazwa_pliku[np]; char nazwa_pliku_html[np]; cout << "Podaj nazwe pliku do otwarcia: "; cin >> nazwa_pliku; //próbujemy otworzyă plik plikcpp.open(nazwa_pliku, ios_base::in); //sprawdzamy czy otworzono if(plikcpp.good()){ cout << "Uzyskano dostep do pliku" << endl; }else{ cout << "Nie mozna uzyskac dostepu!" << endl; return 1; } //kopiowanie nazwy pliku strcpy(nazwa_pliku_html,nazwa_pliku); //dopisanie rozszerzenia html strcat(nazwa_pliku_html,".html"); plikhtml.open(nazwa_pliku_html, ios_base::out); //sprawdzamy czy otworzono if(plikhtml.good()){ cout << "Utworzylem plik do zapisu" << endl; }else{ cout << "Nie mozna otworzyc pliku!" << endl; return 1; } cout << "Plik: " << nazwa_pliku_html << endl; //wpisujemy do pliku poczŕtkowe elementy plikhtml << "<font face=\"Verdana\"><table cellspacing=\"0\" cellpadding=\"7\">"; plikhtml << "<caption align=\"top\">" << nazwa_pliku <<"</caption>"; //instrukcje wstawiajŕce numeracjć int linie = ilosc_lini(nazwa_pliku); //ustawiamy kolor tůa numercji plikhtml << "<td bgcolor=#" << bgcolor << ">"; //ustawiamy kolor tesktu numeracji plikhtml << "<font color=#" << color << ">"; //numeracja for(int i=1; i<=linie; i++){ plikhtml << i << "<br />"; } //koncowe elementy plikhtml << "</font></td>"; //instrukcje wpisujŕce kod programu plikhtml << "<td nowrap=\"nowrap\" bgcolor=#" << bgcolor << ">"; plikhtml << "<font color=#" << color << ">"; //przepisujemy kolejno kaýdŕ linie z cpp do html string *buff = new string; while(getline(plikcpp,*buff)){ //wywoůanie f. wykrywajŕcej znaki specjalne zamien(*buff); //kolorujemy skladnie koloruj(*buff); plikhtml << *buff << "<br />"; }; //wpisujemy do pliku końcowe elementy plikhtml << "</font></td></table></font>"; delete buff; plikhtml.close(); plikcpp.close(); return 0; } //liczenie lini pliku int ilosc_lini(char nazwa[]){ ifstream *plik = new ifstream; plik->open(nazwa, ios_base::in); string *buff1 = new string; int linie = 0; while(getline(*plik,*buff1)){ linie++; } delete buff1; plik->close(); delete plik; return linie; } void zamien(std::string &tekst){ for(int i=0; i<tekst.length(); i++){ //sprawdzamy czy wystŕpi w tekscie jakiú znak specjalny, jeýeli //tak to go zastćpujemy odpowiednikiem html if(tekst[i]=='<') { tekst.erase(i,1); tekst.insert(i,"<"); } else if(tekst[i]=='>') { tekst.erase(i,1); tekst.insert(i,">"); } else if((tekst[i]=='&')&&(tekst[i+1]!='n')&&(tekst[i+2]!='b')) { tekst.erase(i,1); tekst.insert(i,"&"); } else if(tekst[i]=='\t') { tekst.erase(i,1); tekst.insert(i," "); } } } //funkcja w fazie alpha potrzeba poprawek i rozwinićcia void koloruj(std::string &tekst){ //důugoúă tekstu aktualnego wiersza int dlu = tekst.length(); for(int i=0; i<dlu; i++){ if((tekst[i]=='#')&&(i==0)) { tekst.insert(i,"<font color=#00FF00>"); tekst.insert(dlu+20,"</font>"); } else if((tekst[i]=='/')&&(tekst[i+1]=='/')) { tekst.insert(i,"<i><font color=#888888>"); tekst.insert(dlu+23,"</font></i>"); } } } |
Brak komentarzy:
Prześlij komentarz