Joo, miten voidaan C++ -ohjelmasta laittaa jotakin %*% -sisälle tallentaen txt ja lopuksi halutessa siirtää html -tiedostoon kyseinen %*% samaan paikkaan kuin %*% -merkintä on laitettu, ellei se jo onnistu tossa ensimmäisessä määrittelyssä html:lläksi!? Itse html ja txt -filut ovat jo etukäteen tehty johon on määritelty %*% -paikat (Otsikot) tietyille haluamille asioille, mutta itse merkkien sisälle tiedon saaminen ei onnistu, eli miten saan tiedot %*% -merkkien sisälle!?
Jos vielä jotakin mainitaan ohjelmani, jota käytän on "Borland C++ Builder 5" ja teen C++ dos pohjaista ohjelmaa.
Voisit yrittää ilmaista vähän selvemmin, mitä yrität saada aikaan. Itse en ainakaan tuosta saanut juuri mitään selkoa.
Haluatko siis määritellä html-tiedostoihin jonkinlaisia vakioita?
... <title>%otsikko%</title> </head> <body bgcolor="%taustavari%"> ...
... jotka määritellään toisessa tiedostossa:
%otsikko% = "X:n kotisivu" %taustavari% = "#abcdef"
Jos txt-tiedosto on muotoa:
%korvattava% Korvaava teksti
Missä %korvattava% on yksi yhtenäinen merkkijono ja se korvataan loppurivillä, saattaa seuraava hatusta heitelty koodi toimia (virheitäkin voi olla).
#include <fstream> #include <sstream> #include <string> #include <vector> #include <cstdlib> using namespace std; struct Korvaus { string korvattava; string korvaaja; }; int main() { // Avataan txt-tiedosto ifstream txt(TXT_TIEDOSTO); // Korvausparit vektoriin vector< Korvaus > korvaukset; string rivi; // Käydään .txt-tiedosto läpi while ( getline(txt, rivi) ) { string korvattava; string korvaaja; istringstream is(rivi); is >> korvattava; getline( is, korvaaja ); korvaukset.push_back( { korvattava, korvaaja } ); } // Suljetaan txt-tiedosto ja avataan html txt.close(); ofstream html(HTML_TIEDOSTO); // Tähän kirjoitetaan ifstream html_in(TOINEN_HTML); // Tästä luetaan // HTML-tiedoston läpikäynti ja korvaukset while ( getline( html_in, rivi ) ) { for ( unsigned int i = 0 ; i < korvaukset.size() ; ++i ) { if ( rivi.find( korvaukset.at(i).korvaaja ) != string::npos ) { rivi.replace( rivi.find( korvaukset.at(i).korvaaja ), korvaukset.at(i).korvaaja.length(), korvaukset.at(i).korvattava ); } } // Muunneltu rivi talteen html << rivi << endl; } // Suljetaan tiedostot html.close(); html_in.close(); return EXIT_SUCCESS; }
Muunneltu html siis tallennetaan eri tiedostoon kuin alkuperäinen.
Aihe on jo aika vanha, joten et voi enää vastata siihen.