Hallo,
ich habe eine Klasse geschrieben welche eine Textdatei ausliest und die Strings zeilenweise in einen Stringvector legt. Auf diesen Stringvector sollen nun verschiedene Funktionen zugreifen können:
void viewline():
Soll bestimmte Zeilen anzeigen lassen, arbeitet ok.
void removeline()
Soll bestimmte Zeilen löschen, durch das mehrmalige Durchlaufen der for-Schleife "rutschen" die Elemente nach und so ist das Ergebnis nicht mehr das gewünschte, wie könnte ich das optimieren?
void addline()
Soll Zeilen am Ende des Vector anfügen... leider klappt das auch hier nur sporadisch, und ich weiß nicht nach welchem Prinzip (Zeilen werden unvollständig oder gar nicht in den Stingvector anfgefügt). Wo ist hier die Inkonsistenz?
allgemein: wie kann ich eine bessere Abruch-Bedingung schreiben? bei den ersten beiden Funktionen soll man mit Enter die Texteingabe beenden.
Hier nun der Code meiner Klasse:
Alles anzeigen
Ich würde mich echt freuen wenn ihr nen paar (oder alle?) meiner Fragen beantworten könnt..
vielen Dank schonmal und viele Grüße...
Julia
ich habe eine Klasse geschrieben welche eine Textdatei ausliest und die Strings zeilenweise in einen Stringvector legt. Auf diesen Stringvector sollen nun verschiedene Funktionen zugreifen können:
void viewline():
Soll bestimmte Zeilen anzeigen lassen, arbeitet ok.
void removeline()
Soll bestimmte Zeilen löschen, durch das mehrmalige Durchlaufen der for-Schleife "rutschen" die Elemente nach und so ist das Ergebnis nicht mehr das gewünschte, wie könnte ich das optimieren?
void addline()
Soll Zeilen am Ende des Vector anfügen... leider klappt das auch hier nur sporadisch, und ich weiß nicht nach welchem Prinzip (Zeilen werden unvollständig oder gar nicht in den Stingvector anfgefügt). Wo ist hier die Inkonsistenz?
allgemein: wie kann ich eine bessere Abruch-Bedingung schreiben? bei den ersten beiden Funktionen soll man mit Enter die Texteingabe beenden.
Hier nun der Code meiner Klasse:
Quellcode
- #include "AsciiEditor.h"
- #include <fstream>
- #include <iostream>
- #include <vector>
- #include <string>
- #include <iterator>
- class Editor
- {
- public:
- typedef std::vector<std::string> linevector;
- //Textdatei einelesen
- void einlesen()
- {
- std::ifstream ifs("C:/asci1.txt");
- std::string tmp;
- linevector::iterator li; //LineIterator
- while(getline(ifs, tmp))
- {
- lv.push_back(tmp);
- tmp = std::string();
- }
- }
- //Bestimmte Zeilen ansehen
- void viewline()
- {
- typedef std::vector<int> intvector;
- intvector intv;
- intvector::const_iterator inti;
- std::cout<<"Welche Zeilen sollen ausgegeebn werden?: \n\n";
- int eingabe;
- while (std::cin >> eingabe && eingabe != 999 )
- {
- intv.push_back(eingabe);
- }
- linevector::iterator li;
- for (inti=intv.begin(); inti!=intv.end(); inti++)
- {
- li = lv.begin() + *inti; //li LineIterator, lv Linevector von außen
- std::cout << *li << std::endl;
- }
- }
- //Bestimmte Zeilen entfernen
- void removeline()
- {
- typedef std::vector<int> intvector;
- intvector intv;
- intvector::const_iterator inti;
- std::cout<<"Welche Zeilen sollen geloescht werden?: \n\n";
- int eingabe;
- while (std::cin >> eingabe && eingabe != 999 )
- {
- intv.push_back(eingabe);
- }
- linevector::iterator li;
- for (inti=intv.begin(); inti!=intv.end(); inti++)
- {
- li = lv.begin() + *inti; //li LineIterator, lv Linevector von außen
- lv.erase(li);
- }
- for (li=lv.begin(); li!=lv.end(); li++)
- {
- std::cout << *li << std::endl;
- }
- }
- //Zeilen hinzufügen
- void addline()
- {
- std::cout<<"Zeilen hinzufuegen: \n\n";
- std::string eingabe;
- std::string tmp;
- while(getline(std::cin >> eingabe, tmp)&& eingabe != "end!")
- {
- lv.push_back(tmp); //lv Linevector von außen
- tmp = std::string();
- }
- linevector::iterator li;
- for (li=lv.begin(); li!=lv.end(); li++)
- {
- std::cout << *li << std::endl; //li LineIterator, lv Linevector von außen
- }
- }
- private:
- linevector lv; //Linevector
- };
- int main(){
- Editor edit;
- edit.einlesen();
- edit.viewline();
- edit.removeline();
- edit.addline();
- return 0;
- }
Ich würde mich echt freuen wenn ihr nen paar (oder alle?) meiner Fragen beantworten könnt..
vielen Dank schonmal und viele Grüße...
Julia
