Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Nur jede zweite Zeile einer Datei einlesen

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
06.11.2004, 18:43 Uhr
t10ottoo



Hi,

ich hab da nen kleines Problem beim einlesen von Daten, die in einer Datei stehen.
Also ich möchte Textdateien mit Sonderzeichen und Umlauten so umwandeln, dass man sie vernünftig unter DOS lesen kann, also ANSI in ASCII umwandeln.
So sieht erstmal die Datei aus:

Code:
136
94
146
39
152
126
196
142
199
128


Die erste Zahl ist der ANSI-Code eines Zeichen, die Zahl darunter ist der dazugehörige ASCII-Code desselben Zeichen.

Nun, das einlesen jeder einzelnen Zeile sieht ja so aus:

C++:
ifstream suchen;

    suchen.open("win2dos.dat", ios::in);

    doszeichen = WINzahl1;

    if(suchen)
    { // if(suchen)
        while (!suchen.eof())
        { // while (!suchen.eof())

            suchen >> WINzahl;
            getline(suchen, restzeile);

        } // while (!suchen.eof())

    } // if(suchen)
    
    suchen.close();


Wie die einzelnen Variablen deklariert sind, spielt erstmal nicht so eine große Rolle, es geht ja mehr um die zwei Befehle hier:

C++:
            suchen >> WINzahl;
            getline(suchen, restzeile);


Nun zu meiner Frage: Ich möchte gerne nur jede zweite Zeile aus der Datei auslesen, weil ich ja erstmal nur den ANSI-Code suchen muss, da musses do so einen ähnlichen Befehl wie in Visual Basic geben --> "step", oder?

Danke schonmal im vorraus
Thomas

Dieser Post wurde am 06.11.2004 um 18:50 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.11.2004, 19:14 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ruf einfach immer einmal sinnlos getline auf...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.11.2004, 21:22 Uhr
t10ottoo



Ahh, logisch :/ Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.11.2004, 22:16 Uhr
0xdeadbeef
Gott
(Operator)


Das ist aber für diese Anwendung ziemlich umständlich, oder? Sinnvoller wär imho sowas:

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

int main() {
  std::ifstream cv_tbl_in("cv_tbl.txt"); // Die Datei, in der die Konversionsdaten stehen
  std::ifstream in("input.txt");
  std::ostream out("output.txt");
  std::vector<char> cv_tbl(256);
  int c;

  for(int i = 0; i < 256; ++i)
    cv_tbl[i] = static_cast<char>(i);

  while(cv_tbl_in) {
    int i, j;
    cv_tbl_in >> i >> j;
    cv_tbl[i] = static_cast<char>(j);
  }

  while(c = in.get(), in)
   out << cv_tbl[c];
}


Ist jetzt ungetesteter Code, aber etwa so würde ich das anfangen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
07.11.2004, 00:22 Uhr
t10ottoo



Hi,

jo, so könnte man das sicher auch machen. Hab auch heut erst mit dem Programm angefangen, werde auf jeden Fall noch was am Code ändern, aber vorrübergehend brauchte ich erstmal sone "Notlösung" *g*

Gruß
Thomas
 
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: