datei öffnen und zeile nach zeile analysieren
-
@Werner: Die Google-Suchfunktion ginge auch. Ist nämlich repariert, dank Dravere.
-
Hallo rana2007,
ich habe jetzt erst Dein letztes Posting gelesen und kann verstehen, dass Du etwas gefrustet bist.
Du schreibst, dass Du Anfänger bist, also ist es ganz natürlich, dass Du Schwierigkeiten hast, die 'richtigen' Fragen zu stellen.
Folglich bekommst Du auch keine richtigen Antwortenrana2007 schrieb:
ich möchte einen Datei öffnen.
Ok - das kannst Du wohl schon ...
rana2007 schrieb:
ich habe schon der Datei geöffnet und Zeile nach Zeile gelesen...
rana2007 schrieb:
Datei ist im Assembler Sprache.
Das ist kein Problem, Hauptsache es ist in einem lesbaren Format.
rana2007 schrieb:
Es soll Zeile nach Zeile gelesen werden um die Befehle und Register in jeder Zeile erkennt zu werden.
.. beim 'Erkennen' der Befehle und Register wird es jetzt schwierig. Das setzt voraus, dass Du schon eine Idee hast, was damit passieren soll ...
rana2007 schrieb:
Danach jede Zeile als Element in Array speichern.
Das ist jetzt kein Problem - nehme einfach einen std::vector<>, aber ...
rana2007 schrieb:
Im nächste Schritt werde ich die Elemente nach Datenabhängigkeit sortieren.
das wissen wir natürlich nicht, was Du damit meinst. Und genau davon ist es abhängig, wie so eine Datenstruktur eigentlich aussehe soll.
rana2007 schrieb:
im Datei gibt es immer ein Tabulator vor und nach der Befehl. Zwischen zwei Register ist immer ein Komma(,). Anstatt der Register kann auch Zahlen Vorkommen.
das sollte einfach zu machen sein.
Und damit es mal voran geht, mache ich mal einen (hoffentlich für Dich einfach nach zu vollziehenden) Vorschlag.
Folgendes Programm liest so eine Datei ein, speichert die 'Kommandos'- also Befehle und Parameter - in einerstruct Kommando
ab und sagt am Ende, wie viele gelesen wurden.#include <fstream> #include <iostream> #include <string> #include <vector> struct Kommando { std::string befehl; std::string parameter; // das muss sicher noch überarbeitet werden }; // diese Funktion liest ein Kommando-Objekt ein std::istream& operator>>( std::istream& in, Kommando& k ) { return getline( in >> k.befehl >> std::ws, k.parameter ); } int main() { using namespace std; std::vector< Kommando > kommandos; ifstream datei("eineDatei.asm"); // hier den Namen Deiner Assembler-Datei eintragen if( !datei.is_open() ) { // prüfe immer, ob das Oeffenn gut gegangen ist cerr << "Fehler beim Oeffnen der Datei" << endl; return 0; } for( Kommando k; datei >> k; ) kommandos.push_back( k ); cout << kommandos.size() << " Eintraege gelesen" << endl; /// sort( begin(kommandos), end(kommandos), ??? ); // Elemente nach Datenabhängigkeit sortieren return 0; }
Probiere das einfach mal aus und versuche folgende Fragen zu beantworten:
Werner Salomon schrieb:
steht für jeden Kommandotyp die Anzahl der Parameter fest - also 'addx' =3 und 'ld' =1?
Was bedeutet: 'nach Datenabhängigkeit sortieren'? nach welchem Kriterium soll ein Kommando in einer sortierten Liste vor einem anderen Kommando stehen?
Gruß
Werner
-
Arcoth schrieb:
@Werner: Die Google-Suchfunktion ginge auch. Ist nämlich repariert, dank Dravere.
Ähm ... suche ich nach 'getline ist doof' kommt als Resultat:
C++ Forum schrieb:
Keine Beiträge entsprechen Ihren Kriterien.
und suche ich statt dessen nach 'getline' kommt auch:
C++ Forum schrieb:
Keine Beiträge entsprechen Ihren Kriterien.
Ich bin wirklich dankbar, dass es Leute gibt, die dieses Forum am Leben halten, aber hier besteht Verbesserungspotential
- oder der Hinweis auf Google - geht ja auch und macht weniger Arbeit, oder?
Gruß
Werner
-
Werner Salomon schrieb:
Arcoth schrieb:
@Werner: Die Google-Suchfunktion ginge auch. Ist nämlich repariert, dank Dravere.
Ähm ... suche ich nach 'getline ist doof' kommt als Resultat:
C++ Forum schrieb:
Keine Beiträge entsprechen Ihren Kriterien.
und suche ich statt dessen nach 'getline' kommt auch:
C++ Forum schrieb:
Keine Beiträge entsprechen Ihren Kriterien.
Ich bin wirklich dankbar, dass es Leute gibt, die dieses Forum am Leben halten, aber hier besteht Verbesserungspotential
- oder der Hinweis auf Google - geht ja auch und macht weniger Arbeit, oder?
Es gibt da zwei Suchfelder, die klassische Forensuche (unten, nicht funktionierend) und eine Googlesuche auf dem Forum (oben), die funktioniert. Ist genau wie Google selbst zu nutzen, aber man spart sich eben das
site:...
Habe ich heute übrigens auch das erste Mal bemerkt
-
SeppJ schrieb:
Es gibt da zwei Suchfelder, die klassische Forensuche (unten, nicht funktionierend) und eine Googlesuche auf dem Forum (oben), die funktioniert.
Danke für den Hinweis - so geht's
-
// diese Funktion liest ein Kommando-Objekt ein std::istream& operator>>( std::istream& in, Kommando& k ) { return getline( in >> k.befehl >> std::ws, k.parameter ); }
Das kapier ich jetzt nicht wirklich. Also bin jetzt auch nicht der Oberguru mit Operator überladung, aber welche Signatur von getline greift denn da ?
getline hat doch "istream& getline (istream& is, string& str)" , wie funktioniert das da mit (in >> k.befehl...) ??
-
hu?? schrieb:
// diese Funktion liest ein Kommando-Objekt ein std::istream& operator>>( std::istream& in, Kommando& k ) { return getline( in >> k.befehl >> std::ws, k.parameter ); }
Das kapier ich jetzt nicht wirklich. Also bin jetzt auch nicht der Oberguru mit Operator überladung, aber welche Signatur von getline greift denn da ?
getline hat doch "istream& getline (istream& is, string& str)" , wie funktioniert das da mit (in >> k.befehl...) ??Schau mal auf den Rückgabewert von operator>>.
-
Ah.... verschachtelt verschachtelt...
-
C Newbie schrieb:
hu?? schrieb:
// diese Funktion liest ein Kommando-Objekt ein std::istream& operator>>( std::istream& in, Kommando& k ) { return getline( in >> k.befehl >> std::ws, k.parameter ); }
Das kapier ich jetzt nicht wirklich. Also bin jetzt auch nicht der Oberguru mit Operator überladung, aber welche Signatur von getline greift denn da ?
getline hat doch "istream& getline (istream& is, string& str)" , wie funktioniert das da mit (in >> k.befehl...) ??Schau mal auf den Rückgabewert von operator>>.
Und welchen Vorteil bietet das, das so zu schreiben, dass man das kaum versteht? Man muss es doch nicht so kryptisch schreiben, auch wenn man das kann.
-
-
Hallo Werner,
Vielen Dank für dein Tipp. Ich kann jetzt weiter programmierenkommst du immer im Froum?
Gruß,
Rana