+ Antworten
Ergebnis 1 bis 7 von 7

Aus Datei lesen , Unicode

Diskussion über Aus Datei lesen , Unicode in C und C++ der Kategorie Programmierung; Hallo, ich möchte aus einer Datei lesen aber irgendwie will getline mir nichts ausgeben Code: // Open the file fstream ...

  1. #1
    Reg.-Benutzer
    Reg.-Datum
    25.09.2009
    Ort
    Kaiserstuhl
    Beiträge
    32

    Standard Aus Datei lesen , Unicode

    Hallo,
    ich möchte aus einer Datei lesen aber irgendwie will getline mir nichts ausgeben
    Code:
      // Open the file
      fstream f;
      f.open("111.txt", ios::in);
      if (!f.is_open())
        return Error();
    
    
      while (!f.eof())
      {
          f.getline(charstrLine, 80);
      }
      f.close();
    111.txt existiert und hat Inhalt. Ich bin mir nicht sicher ob es am Unicode liegt aber selbst wenn sollte es ja irgendwas ausgeben, da die Buchstaben (ohne Umlaute) ja die selben Werte haben, oder? Ich verzweifel beinahe. Sitze schon den ganzen Anbend/Nacht. Sehen dass das nicht funktionier tu ich im Debugmodus. Die werte ändern sich nicht. habe auch schon messageboxes ausgeben wollen. geht nicht.

    Infos:
    c++
    VS 2010
    Win32 Anwendung
    non MFC
    keine vorkompilierte Header
    nichts was ich nicht kenne ATL/STL und so ... ka was das bedeutet... alles aus.

  2. #2
    Administrator + Moderator
    C++: Compiler, IDEs, APIs / C und C++, Algorithmik, Basic, Sonstige, .NET
    Avatar von Klotzkopp
    Reg.-Datum
    10.07.2001
    Ort
    Essen
    Beiträge
    8.980

    Standard

    Zitat Zitat von De Kaisastiähla Beitrag anzeigen
    Ich bin mir nicht sicher ob es am Unicode liegt aber selbst wenn sollte es ja irgendwas ausgeben
    Im gezeigten Code ist nichts, das irgendeine Ausgabe erzeugen könnte.

    Zum Code:
    • Wenn du statt fstream ifstream benutzt, kannst du dir das ios::in sparen.
    • open und close benutzt man normalerweise nicht. Für open gibt es den Konstruktor, für close den Destruktor.
    • eof eignet sich nicht als Schleifenbedingung, weil das erst dann true ergibt, wenn das Lesen schon einmal fehlgeschlagen ist.
    • Benutz besser std::getline aus <string>, dann bekommst du keine Probleme, wenn mal eine Zeile mehr als 80 Zeichen hat.

    Code:
      // Open the file
      ifstream f("111.txt";
      while (f.getline(charstrLine, 80))
      {
      }
    "Funktioniert nicht" ist keine ausreichende Problembeschreibung.

  3. #3
    Reg.-Benutzer Avatar von Eleu
    Reg.-Datum
    28.02.2009
    Beiträge
    708

    Standard

    Hi De Kaisastiähla,

    der folgende Ansi C Code ließt aus der Datei "C:\Text.txt" die erste Zeile aus.

    Ausgegeben werden die ersten 3 Zeichen und eine Zeile tiefer im Ausgabefenster die nächsten 3 Zeichen.

    Code:
    {
    char data_1[255]; 
    
    char aa[255];
    char bb[255];
    FILE *ptr;	
    ptr = fopen("C:\\Text.txt", "r");  //Textdatei öffnen
    fgets(data_1, 255, ptr);          //Die Zeile wird aus der Textdatei eingelesen	
    strcpy(aa, data_1);
    strcpy(bb, data_1);
    {
    char* substr = &aa[0];
    aa[3] = '\0';
    printf( "Wert 1 aus Zeile 1:    '%s'\n", substr , "%s\n");
    }
    {
    char* substr = &bb[3];
    bb[6] = '\0';
    printf( "Wert 2 aus Zeile 1:    '%s'\n", substr , "%s\n");
    }
    if( ptr != NULL )  // Wenn nichts in der Textatei steht, springe nach unten und schliesse die Datei
    {
    }
     fclose( ptr );		//Textdatei schliessen	
    }
    Ich hätte mal die Frage, wie ich denn an die letzen 3 Zeichen in der Textdatei herankommen kann, wenn diese nicht in der ersten Zeile der Textdatei stehen, sondern in der zweiten Zeile der Textdatei ?
    Was müsste ich im Code dafür ändern ?

    Kann mir das jemand erklären.

    Gruß
    Eleu
    Was wahr ist, ist weder gut noch böse, sondern einfach wahr !
    Rabindranath Tagore, bengalischer "Alleskünstler" (1861 - 1941), Nobelpreis für Literatur 1913

  4. #4
    Administrator + Moderator
    C++: Compiler, IDEs, APIs / C und C++, Algorithmik, Basic, Sonstige, .NET
    Avatar von Klotzkopp
    Reg.-Datum
    10.07.2001
    Ort
    Essen
    Beiträge
    8.980

    Standard

    Zitat Zitat von Eleu Beitrag anzeigen
    der folgende Ansi C Code ließt aus der Datei "C:\Text.txt" die erste Zeile aus.
    Hier geht es um C++.

    Zitat Zitat von Eleu Beitrag anzeigen
    Ich hätte mal die Frage
    Dann mach dafür bitte einen eigenen Thread auf. Sonst behandeln wir hier zwei komplett unterschiedliche Probleme quer durcheinander.
    "Funktioniert nicht" ist keine ausreichende Problembeschreibung.

  5. #5
    Reg.-Benutzer Avatar von Eleu
    Reg.-Datum
    28.02.2009
    Beiträge
    708

    Standard

    Entschuldigung.
    Was wahr ist, ist weder gut noch böse, sondern einfach wahr !
    Rabindranath Tagore, bengalischer "Alleskünstler" (1861 - 1941), Nobelpreis für Literatur 1913

  6. #6
    Reg.-Benutzer
    Reg.-Datum
    25.09.2009
    Ort
    Kaiserstuhl
    Beiträge
    32

    Standard

    Zitat Zitat von Klotzkopp Beitrag anzeigen
    Im gezeigten Code ist nichts, das irgendeine Ausgabe erzeugen könnte.
    Jop, testen kann ich immer nur im mit dem Debugger von VS2010, indem ich die Variablen verfolge. Das haben die echt gut gemacht. In Win32 Anwendungen ist es leider nicht so einfach etwas auszugeben à la prinntf(...) oder weitere. Überzeugt mich vom Gegenteil, würde mich sehr freuen.
    Zum Code:
    Wenn du statt fstream ifstream benutzt, kannst du dir das ios::in sparen.
    Danke, gemacht.
    open und close benutzt man normalerweise nicht. Für open gibt es den Konstruktor, für close den Destruktor.
    Nochmals danke, feine Sache wenn das für mich erledigt wird. Ich muss dazu sagen, dass wir das in der Uni gelernt haben. Prof obv failed teaching C++.
    eof eignet sich nicht als Schleifenbedingung, weil das erst dann true ergibt, wenn das Lesen schon einmal fehlgeschlagen ist.
    Hier steht halt das getline den istream zurückgibt. Deinem Code entnehme ich dann, dass ein leerer istream NULL/0/false ist. Ist das immer so?
    Benutz besser std::getline aus <string>, dann bekommst du keine Probleme, wenn mal eine Zeile mehr als 80 Zeichen hat.
    Naja würde ich gern aber ich brauche hinterher nen CSting wegen seinen angenemen Operationen und Möglichkeit ihn zu kovertieren. Ich habe schon ne weile nach casts von Std::string zu jeglichen (unnötig vielen) Stringarten gesucht, aber das scheint mir nicht so einfach wie der CString. Hier habe ich eine Lösung gefunden. Nur nicht für den Std::string.

    Danke für die kompetente Hilfe.

  7. #7
    Administrator + Moderator
    C++: Compiler, IDEs, APIs / C und C++, Algorithmik, Basic, Sonstige, .NET
    Avatar von Klotzkopp
    Reg.-Datum
    10.07.2001
    Ort
    Essen
    Beiträge
    8.980

    Standard

    Zitat Zitat von De Kaisastiähla Beitrag anzeigen
    Anwendungen ist es leider nicht so einfach etwas auszugeben à la prinntf(...) oder weitere.
    Mit OutputDebugString kannst du einen Text im Debug-Fenster ausgeben lassen (oder mit DebugView mitlesen).

    Zitat Zitat von De Kaisastiähla Beitrag anzeigen
    feine Sache wenn das für mich erledigt wird.
    Das Konzept nennt sich RAII

    Zitat Zitat von De Kaisastiähla Beitrag anzeigen
    Ich muss dazu sagen, dass wir das in der Uni gelernt haben. Prof obv failed teaching C++.
    Kommt vermutlich von C.

    Zitat Zitat von De Kaisastiähla Beitrag anzeigen
    Deinem Code entnehme ich dann, dass ein leerer istream NULL/0/false ist.
    So ähnlich. Wenn du ein stream-Objekt in einem Kontext benutzt, wo ein Wahrheitswehrt gefragt ist, entspricht der Wert dem negierten Rückgabewert von fail().

    Zitat Zitat von De Kaisastiähla Beitrag anzeigen
    Ist das immer so?
    Immer, wenn das badbit oder das failbit des Streams gesetzt ist: Wenn die Datei nicht geöffnet werden konnte, wenn du am Dateiende angelangt bist, wenn du mit >> in den falschen Typ einliest.

    Zitat Zitat von De Kaisastiähla Beitrag anzeigen
    Hier habe ich eine Lösung gefunden. Nur nicht für den Std::string.
    std::string ist ein typedef von std::basic_string, der ist auf dieser Seite auch gelistet.
    "Funktioniert nicht" ist keine ausreichende Problembeschreibung.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 06.10.2005, 16:09
  2. [VB 6] Datei erstellen in Unicode UTF 8
    Von Catweezle im Forum Basic
    Antworten: 3
    Letzter Beitrag: 18.08.2005, 10:00
  3. INI Datei lesen
    Von robotto7831a im Forum C++: Compiler, IDEs, APIs
    Antworten: 6
    Letzter Beitrag: 14.08.2003, 08:08
  4. Txt-Datei aus Batch-Datei lesen
    Von LittlePicasso im Forum Delphi/RPG+CL/Sonstige
    Antworten: 8
    Letzter Beitrag: 14.02.2003, 15:15
  5. aus Datei lesen
    Von snopsy im Forum Skript- und Webserverprogrammierung
    Antworten: 2
    Letzter Beitrag: 12.04.2002, 11:55

Die häufigsten Suchbegriffe für diese Seite:

Bisher noch keine Treffer von einer Suchmaschine