Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Auslesen einer .txt-datei

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
20.11.2003, 08:45 Uhr
Markus25



Hallo Leute,

ich bastle z.Zt. an einem Programm, welches von einer .txt-Datei IP-Adressen und Infos zu diesen Adressen in eine neue .txt-Datei schreiben soll. Das Programm eigentlich ganz gut, allerdings habe ich immer das Problem das nicht alle Datensätze erfasst werden. 95% der Datei werden gelesen und auch richtig in die neue .txt-Datei geschrieben, aber die letzten 5% (sind immer die letzten paar Zeilen) ignoriert das Prog. und hört einfach auf zu lesen und zu schreiben. Vielleicht kann mir jemand von euch weiterhelfen, weiß leider nicht mehr weiter. Den bisherigen Programm-Code seht ihr unterhalb.
Im voraus Danke.
Gruß Markus


C++:
#include <fstream>  
#include <iostream.h>
using namespace std;  
  
void main()  
{  
  ifstream in("logs.txt");  
  ofstream out("ausgabe.txt");  
  
    
  char ch;  
  double i = 1;
  
  
  while (!in.eof())
  {
    in.get(ch);
        
    while (ch != '[')
    {
        if (ch >= '0' && ch <= '9' || ch=='.')
        {
            out.put(ch);
            
        }
        in.get(ch);
    }



    while (ch != '\n')
    {
        
        in.get(ch);
        
        if (ch == 's')
        {
        in.get(ch);
        if (ch == 'o')
        {
        in.get(ch);
        if (ch=='u')
        {
        in.get(ch);
        if (ch=='r')
        {
        in.get(ch);
        if (ch == 'c')
        {
        in.get(ch);
        if (ch=='e')
        {
        in.get(ch);
        if (ch=='=')
        {
              while (ch != ' ')
               {                                
                  in.get(ch);
                  out.put(ch);
                }
            }
            }
            }
            }
            }
            }
                                                
    }    
    
    
    out.put('\n');
        
    i++;
    cout<<"Es wurden "<<i<<" Saetze geschrieben"<<endl;
  }

  
  cout<<"Datei geschrieben"<<endl;
}



--edit: Pablo. [ cpp ] tags gesetzt--

Dieser Post wurde am 20.11.2003 um 12:11 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.11.2003, 10:05 Uhr
geissbock



mal als gedankenanstoß was das prog auch kürzer machen würde:

lass doch nicht nur immer ein zeichen einlesen sondern eine ganze kette. also brauchst du ein feld von char. und dann lässt du bloß den string mit source vergleichen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.11.2003, 13:54 Uhr
~RedEagle
Gast


kleiner Tipp: Wenn du hinter jedem } der genzen if-Anweisungen einen Kommentar (//blabla) schreibst, wird der code extrem übersichtlicher
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.11.2003, 12:40 Uhr
~Waldemar
Gast


mal als gedankenanstoß was das prog auch kürzer machen würde:

lass doch nicht nur immer ein zeichen einlesen sondern eine ganze kette. also brauchst du ein feld von char. und dann lässt du bloß den string mit source vergleichen.



wurde mich die Lösung von "geissbock" sehr interessieren. Schreibmal bitte eine kleine Code.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
23.11.2003, 13:03 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



C++:
int main(){
    std::vector<std::string> dateiinhalt;
    std::string tmp;

    std::ifstream fromFile("test.txt");
    while(std::getline(fromFile,tmp))dateiinhalt.push_back(tmp);
    fromFile.close();

    std::cout<<"Es wurden folgende "<<dateiinhalt.size()<<" Zeilen aus der Datei gelesen."<<std::endl;
    for(std::vector<std::string>::iterator i=dateiinhalt.begin();i!=dateiinhalt.end();++i)
    std::cout<<*i<<std::endl;

return 0;
}


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 23.11.2003 um 13:04 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
23.12.2003, 13:49 Uhr
ai-tee



Ich bekomme immer folgende Fehler bei dem Code, fehlt mir ein Include?

- 'vector' : Ist kein Element von 'std'
- fromFile' verwendet undefiniertes class 'basic_ifstream<char,struct std::char_traits<char> >'

und noch ein paar, die glaub ich darauf aufbauen ...

auch was mit iterator ist kein Element ...

kann mir wer sagen was ich noch benötige? Hab bisher nur mit CFile gearbeitet aber krieg damit das Zeilenweise einlesen net hin ...
--
Greetz, ai`tee
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
23.12.2003, 16:49 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



C++:
#include <iostream>
#include <fstream>
#include <vector>
#include <string>


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: