tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
1
ZUGRIFFE
4512
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Busti Busti ist offline Mitglied
    Registriert seit
    Sep 2007
    Ort
    Offenbach/Queich
    Beiträge
    21
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    #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
     

  2. #2
    Busti Busti ist offline Mitglied
    Registriert seit
    Sep 2007
    Ort
    Offenbach/Queich
    Beiträge
    21
    Für den Fall, dass es jemanden interessiert, ich bin weiter gekommen

    So schaut's mittlerweile aus

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    
    #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();
    }
     

Ähnliche Themen

  1. Nach einem Wort suchen
    Von kayut im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 11.05.10, 19:41
  2. Per Konsole in mehreren (allen) Dateien nach einem Wort suchen
    Von tutorial-hilfe im Forum Linux & Unix
    Antworten: 8
    Letzter Beitrag: 30.04.08, 15:06
  3. [C++]Nach String suchen, teilen und speichern
    Von Seelenquell im Forum C/C++
    Antworten: 27
    Letzter Beitrag: 25.06.07, 09:27
  4. Antworten: 2
    Letzter Beitrag: 14.05.05, 12:54
  5. Antworten: 2
    Letzter Beitrag: 31.01.05, 17:33