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.