Speicherung an bestimmter Stelle in einer HTML-Datei in C++

NeoTrace

Grünschnabel
C++ // Speicherung an bestimmter Stelle in einer HTML-Datei

Hallo zusammen :D

Folgendes:
Wollte ein Program in C++ für Linux bzw. / und Windows erstellen ( Konsole ) das mit Menü-Auswahl, einer Eingabe von Artikel und Preis daherkommt. Das Menü steht die Eingabe auch und die Speicherung erfolgt zur Zeit noch so, dass man den Dateinamen eingeben kann und den Speicherort auch.

Code:
int main()
{
   ....

// Speichern
case 'S':			
		if( myPlan.save() )
               cout << " Speiseplan in der Datei "
                       << myPlan.getFilename()
		       << " gespeichert !" << endl;
					
		else
                cerr << " Speiseplan konnte nicht gespeichert werden !"
			<< endl;
		weiter();
		break;
....
}

-------------------------------------------------------------------------------------------------
// Speiseplan speichern
bool PlanList::save()	
{
	if( filename.empty() )
		return saveAs();
	if( !dirty )
		return true;
		
	ofstream outfile( filename.c_str(), ios::out | ios::binary );
	
	if( !outfile )
	{
		cerr << "Datei " << filename << " konnte nicht geöffnet werden !" << endl;
		return false;
	}
	
	int i=0;
	while( i < count )
	{
		outfile << v[i].name  << '\0';
		outfile << v[i].preis << '\0';
		
		if( !outfile)
			break;
		else
			i++;
	}
	
	if( i < count )
	{
		cerr << "Fehler beim Schreiben der Datei " << filename << endl;
		return false;
	}
	dirty = false;
	return true;
}
Das mit der Speicherung will ich aber ändern insofern das man erst mal nicht mehr den Speicherort sowie den Dateinamen eingeben muss / kann. Sondern das man bei Menü-Auswahl "Speichern"
in einer HTML-Datei an einer bestimmten Stellen abspeichert die
so aussehen: <!-- Platzhalter=#1 //-->
Natürlich sollen diese "Platzhalter" erhalten bleiben um später wieder veränderungen machen zu können also hier-> setzte den erstellten Satz, 7 Zeichen nach dem HTML Komentar: #1
Hoffe da blickt einer von euch durch :D
MFG
NeoTrace
 
Zuletzt bearbeitet:
Ne, also so ganz blicke ich wirklich nicht durch. Was willst du denn genau machen? In einer HTML abspeichern? Dann gib deiner Datei die Erweiterung html, wenn du Tags mitspeichern möchtest, dann schreib die halt mit rein.
 
Ich würde das einfach in der Planlist::save einbauen. Generell würde ich den Speiseplan solange das Programm läuft im Speicher lassen. Planlist::save speichert dann den gesamten Speiseplan (erstellt die HTML also immer wieder neu) und bastelt das HTML-Zeug darum, Planlist::load liest das ganze wieder ein und extrahiert das wichtige (lässt also die Tags links liegen). Jede Umschiebeoperation kannst du dann bequem mit deinen Arrays im Speicher machen ohne einen schrecklich ineffizienten Dateiparser schreiben zu müssen und save verkapselt die HTML Besonderheiten.

(P.S.: Wenn dir die load-Funktion zu stressig ist, mit den Tags, dann würde ich in Erwägung ziehen einfach zwei Dateien zu speichern, eine nur für den Datensatz und eine zum von außen betrachten als HTML.)
 
Nim regular Expressions (am besten Perl oder Ruby) damit ist es ganz einfach. Einfach ein eindeutiges Muster nehmen und dieses dann mittels s/muster/ersatz ersetzen.
 
Noch eine Möglichkeit wäre der Einsatz eines kompletten HTML-Parsers. Auch ein XML-Parser liesse sich verwenden, zum Beispiel der von Microsoft oder Xerces -- beide sind kostenlos. Das wäre zwar mit Kanonen auf Spatzen schiessen, aber sehr lehrreich. :)
 
Zurück