.txt auslesen, nach Wort suchen, Zeilen zählen und Teile speichern

Busti

Mitglied
Hallo zusammen,

ich suche schon eine ganze Zeit hier im Forum nach einer Lösung für mein Problem.

Kurz und knapp:
Die Textdatei sieht in etwa so aus

----------------------------------------------------------------------------------------------------------------------
Textdatei: Name
----------------------------------------------------------------------------------------------------------------------
Nr. Bauteildatei X-Pos Y-Pos Z-Pos X-Rot Y-Rot Z-Rot
----------------------------------------------------------------------------------------------------------------------

1 test0.5.wrl 0 0 7 0 0 0
2 test1.0.wrl 0 0 0 0 0 0
3 nochwas_1.wrl 0 0 32 0 0 0
4 wand.wrl 85 153 63 0 0 0
5 wand.wrl 85 153 291 0 0 0
6 wand.wrl -146 -123 39 0 0 0
7 wand.wrl -146 -123 315 0 0 0
8 wand.wrl 10 -268 39 0 0 0
9 wand.wrl 10 -268 315 0 0 0
10 wand.wrl 290 -288 57 0 0 0
11 wand.wrl 290 -288 297 0 0 0
12 wand.wrl -198 38 223 0 0 90
13 wand.wrl -198 -162 130 0 0 90
14 nochwas_2.wrl -178 -262 177 0 0 0
15 end.wrl 0 0 352 0 0 0


Zwischen den Zahlen sind mehrere Leerzeichen.
Ich möchte nun die Textdatei in C++ auslesen und in jeder Zeile in der ".wrl" vorkommt Bauteildatei, X-Pos, Y-Pos, Z-Pos, X-Rot, Y-Rot und Z-Rot je einzeln in einer Variable/Array speichern und die Anzahl der Zeilen um eins erhöhen.

Angefangen habe ich mal so, leider ist mein C++ noch nicht wirklich gut, daher bitte ich um eure Hilfe.

Code:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

void main()
{
	char line[1024];
	ifstream Filename;
	int lae;
	Filename.open("K107.txt", ios::in|ios::binary);
	if (Filename.is_open())
	{
		while(!Filename.eof()){
		Filename.getline(line, 1024);
		fprintf(stderr, "line: %s\n", line);
		}
	}
	cin.peek();
}

Viele Grüße
 
Für den Fall, dass es jemanden interessiert, ich bin weiter gekommen :)

So schaut's mittlerweile aus

Code:
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;

void main()
{
	//Hilfs-Puffer
	char line[1024];
	int row = 0;

	// Datei zum Lesen öffnen
	FILE *fp = fopen("K107.txt", "r");

	// wenn die Datei existiert
	if(fp)
	{     
		  // bis zum Ende der Datei    
		while(!feof(fp))
		{
				// Hilfs-Puffer leeren
				strcpy_s(line, 1024, "");
				
				// eine Zeile einlesen
				fgets(line, 1024, fp);

				// String abschließen
				line[strlen(line)] = '\0';
				/*len = strlen(line);

				cout << len << endl;*/
				// Verarbeitung der Zeile

				// über strstr kann ein Teilstring gesucht werden 
				if(strstr(line, "wrl")){
					int iv[7];
					char filename[128];
					sscanf(line, "%d %s %d %d %d %d %d %d", iv, filename, iv+1, iv+2, iv+3, iv+4, iv+5, iv+6);

					cout << iv[0] << " " << filename << " " << iv[1] << endl;

					// Anzahl gefundene Zeilen erhöhen
					row++;
				}
		}
		fclose(fp);
		cout << "Es sind " << row << " Reihen." << endl;
	}
	cin.peek();
}
 

Neue Beiträge

Zurück