Tabseparierte Strings aus Textdatei seine Zeile zuweisen

Mahatmas

Mitglied
Moin Moin...

Habe mir ein kleines Programm geschrieben, mit dem ich eine Textdatei eingelesen und die Inhalte in tab-separierte string-arrays abgespeichert habe. Zur kurzen Erklärung mein txt-file:
Code:
	letter1	letter2	letter3
Print Some Letters	F	L	O	
	first number	second number	third number
Print Some Numbers	4	5	6
	kommentar1	kommentar2	kommentar3
Print Some Points	....	...	..

Beginnt eine Zeile mit einem String (z.B. "Print Some Letters") so wird dieser String in aw[i] gepackt. Die weiteren durch Tabulator getrennten Strings sind Parameter(z.B. "F") und werden in para[p] gespeichert. Beginnt die Zeile jedoch mit einem Tab, wie die erste Zeile, so handelt es sich dabei um Kommentare(z.B. "letter1"). In komm[k] abgespeichert.

Hier mein Code:
Code:
{
string test, leer = "";		// String "test" zum Prüfen, ob AW vorhanden; String "leer" zum Vergleichen mit "test"
string line;
int i = 0;		// Zählvariable für die Actionwörter
int p = 0;		// Zählvariable für die Parameter
int k = 0;		// Zählvariable für die Kommentare
    
         ifstream input(textdatei);
	if (input.is_open())		// Abfrage, ob die Datei geöffnet ist
	{		
	         while(getline(input, line))
		{	
			istringstream in(line);	
			if (getline(in, aw[i], '\t'))	// Trennt das AW vom Rest der Zeile
			{	
				test = aw[i]; 
				
				if(strcmp(test.c_str(), leer.c_str()) == 0)	// wenn AW-Spalte leer ist, wird "Kein AW!" ausgegeben, sonst der Name des AW`s
				{
					//cout << "Kein AW!" << endl;
					while (getline(in, comm[k], '\t'))		// Erzeugt die Arrays für die Kommentare
					{
						//cout << "Dies ist ein Kommentar: " << comm[k] << endl;
						k++;
					}
				}
				else
				{
					//cout << "Dies ist ein AW: " << aw[i] << endl;	// Erzeugt die Arrays mit den AW`s
					i++;
				}
			}
			while (getline(in, para[p], '\t'))		// Erzeugt die Arrays für die Parameter
			{
				//cout << "Passender Parameter: " << para[p] << "; Gehoert zum AW: " << aw[i-1] << endl;
				p++;
			}
		}	// Ende while(getline(fin, line))
	} // Ende if (input.is_open())
	else
         {
	          cerr << "could not open file." << endl;	// Ausgabe wenn Datei nicht geöffnet werden konnte
	}
	return i;	// Anzahl der AW´s
}

Global:
Code:
string aw[100];	// String Array für die "Actionwörter
string para[100];	// String Array für die Parameter
string comm[100];	// String Array für Kommentare

Das funktioniert soweit alles.
Nur will ich jetzt den einzelnen aw[0],aw[1],...,para[0],para[1],...,komm[0],komm[1],... die Zeile zuweisen, in der der String in der Textdatei zu finden ist. Wie kann ich das machen? Hab schon einiges ausprobiert und gesucht, aber irgendwie nix auf die Reihe bekommen.
Wenn möglich vielleicht sogar eine eigene Funktion...

Wäre super, wenn mir da einer helfen könnte...
Sag schonmal "Danke" im vorraus...

Gruß,
Mahatmas
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück