veschiedene vector<string> aus txt Datei einlesen

Andruschka

Grünschnabel
Folgendes Problem:
Ich habe eine .txt Datei. In dieser Datei sind veschiedene Überschriften mit Texten:

ÜBERSCHRIFT1:
bla
bla bla
und nochmal bla
<-- Leerzeile
ÜBERSCHRIFT2:
bla
<-- Leerzeile

usw. alle unterschiedliche Zeilenanzahl!

Ich will die .txt Datei so auslesen,
dass jeder Text (die blas) in einen eigenen vector<string> abgespeichert werden.
Dabei sollen die Überschriften nicht mit abgespeichert werden!

string str, temp;
vector<string> text1;

ifstream inDatei("texte.txt");

if (!inDatei.is_open())
{
cout << "Fehler:Datei konnte nicht geoeffnet werden,"
<< " beliebige Taste zum beenden druecken" << endl;
cin.ignore(2);
exit(1);
}

//schleife drum.... while(inDatei !=EOF) ?

getline(inDatei, temp);

do
{
getline(inDatei, str);
text1.push_back(str);
temp=str.length();
}
while(temp=="\n");

//?


danke im Vorraus
Andy
 
Zuletzt bearbeitet:
Hi.

Bitte mach dich erstmal mit dem Forenregeln und Funktionen vertraut. Nutze die Code-Tags.

C++:
std::vector<std::vector<std::string> > entries;

std::ifstream input(...);
std::string line;

while (input.ignore(std::numeric_limits<streamsize>::max(), '\n')) {
  entries.push_back(std::vector<std::string>());

  while (std::getline(input, line) && !line.empty()) {
    entries.back().push_back(line);
  }
}
Gruß
 
Moin und Willkommen bei Tutorials.de!

Vorab: nutze bitte zum Posten Deines Codes die Code-Tags (entweder der #-Button im Editor oder Klammerung des Codes mit [_CODE_][/_CODE_] OHNE die Unterstriche!!)

Ich will die .txt Datei so auslesen,
dass jeder Text (die blas) in einen eigenen vector<string> abgespeichert werden.
Dabei sollen die Überschriften nicht mit abgespeichert werden!

Verstehe ich das richtig? Du willst für jeden Textblock einen eigenen Vektor anlegen?
Warum :confused:

getline(inDatei, temp);

do
{
getline(inDatei, str);
text1.push_back(str);
temp=str.length();
}
while(temp=="\n");

Hmm, du liest zunächst die erste Zeile in den String "temp" ein, dann (in der Schleife) die zweite nach "str" und versuchst dann die Länge von "str" in den String "temp" zu schreiben ... das geht ohne zu Casten schonmal nicht!

Und was soll Deine Abbruchbedienung bewirken? Da Du ja zuvor die Länge des Strings geschrieben hast (gesetzt den Fall dass das dann klappt), dann wird Deine Bedingung nie erfüllt werden!
Lies einfach solange, bis Dir 'getLine' keine Zeilen mehr liefert (Stichwort EndOfFile/EOF)!

Gruß
Klaus
 
Sorry das mit dem Code einfügen hatte ich erst gesehen als es schon abgeschickt war!

Ich benötige für jedes Textfragment einen eigenen Vector!
Meine Idee war
Schleife um das ganze bis EOF
dann erste Zeile jeweils abfangen und wegschmeißen (Überschrift brauch ich nicht)
dann die Zeilen bis zu nächsten Leerzeile in einen vector
und dann das ganze wieder von vorn...

danke
Andy
 
Code:
	getline(inDatei, temp_1);
	do
	{
		getline(inDatei, str);
		text1.push_back(str);
		temp=str;
	}
	while(!temp.empty());

soweit wäre ich schonmal....
jetzt noch die schleife...

Und wie kann ich das regeln das der das in veschiedene vectoren schreibt? also text1, text2, text3,...

danke
Andy
 
Zurück