Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Einlese funktioniert nicht

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 < [ 2 ]
000
14.07.2015, 13:32 Uhr
Krab




C++:
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
int z=0;

int main(int argc, char *argv[])
{
    fstream f;  // Datei-Handle
    string s;
    
  
    f.open("\\FOR\\Schreibtisch\\PZSummen\\Build\\Products\\Debug\\Test3.dat", ios::in); // Öffne Datei aus Parameter
    
    while (!f.eof())          // Solange noch Daten vorliegen
    {
        getline(f, s);        // Lese eine Zeile
        cout<<z<<" "<<s<< " nix\n";    // Zeige sie auf dem Bildschirm
        z++;
        if (z == 100) break;
    }
    f.close();                // Datei wieder schließen
    return 0;
}



Das Macro läuft, gibt allerdings nicht eingelesene WERTE aus; obwohl Pfad und Name der Datei stimmen und diese auch mit einer Zahlenreihe gefüllt. Was kann ich tun? Was fehlt ....?

Was ist eigentlich der Unterschied zwischen ios::in und ios_base::in?

Dieser Post wurde am 14.07.2015 um 13:42 Uhr von Krab editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.07.2015, 09:24 Uhr
ao

(Operator)


Was meinst du damit, "gibt nicht eingelesene Werte aus"?

Den ios::in-Kram kannst du dir sparen, indem du ifstream anstatt fstream verwendest. Das ist eine spezialisierte Klasse für Eingabe-Dateien.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.08.2015, 21:49 Uhr
joni



Du solltest auf jeden Fall abchecken, ob die Datei erfolgreich geöffnet werden konnte!
Weil sonst gibt er trotzdem deine Variable s aus.

C++:
f.open("\\FOR\\Schreibtisch\\PZSummen\\Build\\Products\\Debug\\Test3.dat", ios::in); // Öffne Datei aus Parameter
    
   if (!f)
   {
      cout<<"Datei konnte nicht geöffnet werden"<<endl;
      system("Pause");
      return 0;
   }



    while (!f.eof())          // Solange noch Daten vorliegen
    {
        getline(f, s);        // Lese eine Zeile
        cout<<z<<" "<<s<< " nix\n";    // Zeige sie auf dem Bildschirm
        z++;
        if (z == 100) break;
    }



-----
Edit: cpp-Tags eingesetzt.

Dieser Post wurde am 13.08.2015 um 14:51 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
13.08.2015, 13:59 Uhr
Krab



Bei mir kommt sowas: Error opening fileProgram ended with exit code: 0

Wie muß denn der Pfad genau aussehen, und wo muß die Datei stehen? Eventuell gibt es da Vorgaben von Xcode?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
13.08.2015, 15:05 Uhr
Hans
Library Walker
(Operator)


Hi,

das sieht ganz danach aus, als ob er die Datei nicht finden kann. Am besten ist es, wenn Du die Eingabedatei ins selbe Verzeichnis schreibst, wie die Programmdatei. Dann brauchst Du Dich erst mal nicht mit Pfadangaben herum ärgern.
Ansonsten würde ich davon ausgehen, dass das Programm ausgehend von dem Verzeichnis, in dem es steht, den Pfad sucht, den Du angegeben hast, diesen aber nicht findet. Du solltest also, wenn der Pfad vom Wurzelverzeichnis ausgeht, noch eine Laufwerksangabe dazu nehmen, also:

C++:
f.open("C:\\FOR\\Schreibtisch\\PZSummen\\Build\\Products\\Debug\\Test3.dat", ios::in); // Öffne Datei aus Parameter



oder erst mal ein paar Verzeichnisebenen runter gehen, also sowas einsetzen:
"\\..\\..\\.."
Das würde in Deinem Code dann so aussehen:

C++:
f.open("\\..\\..\\..\\FOR\\Schreibtisch\\PZSummen\\Build\\Products\\Debug\\Test3.dat", ios::in); // Öffne Datei aus Parameter


Damit gehst du erst mal 3 Verzeichnisebenen tiefer, bevor Du in der Hierachie wieder hoch steigst.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
13.08.2015, 15:31 Uhr
Krab



Danke für den Tip, aber das war es nicht.

Ich hab die Datei Test.txt in dasselbe Verzeichnis geschoben mittels TextEdit und Bewegen, indem auch die Main-Datei des Programmes ist.

Ich vermute irgendetwas bei den Einstellungen von XCode.....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
13.08.2015, 22:45 Uhr
Hans
Library Walker
(Operator)


Hi,

Zitat von Krab:

Ich vermute irgendetwas bei den Einstellungen von XCode.....

tja, da kann ich dann nicht weiter helfen, weil ich von Apple-Systemen keine Ahnung habe. (Musste erst mal gucken, was ich mir unter XCode überhaupt vorzustellen habe.)

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
14.08.2015, 12:20 Uhr
ao

(Operator)


Werden denn Pfadnamen in Mac-OS mit Backslash geschrieben? Ich dachte, das wäre ein Unix-Abkömmling. Vielleicht mal "/FOR/Schreibtisch/PZSummen/Build/Products/Debug/Test3.dat" versuchen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
14.08.2015, 12:39 Uhr
Krab



Hab das alles schon geändert, mit Backslash und Slash, Doppelslash und Doppelbackslash ebenso versucht, wie mit vollen Pfadangaben und mit ./ ...

ich brauche hier jemanden, der mit Xcode arbeitet, denn es scheint nur damit zu tun zu haben ...

In eine Datei schreiben ist problemlos gelungen, nur jetzt will ich diese auslesen, und das funktioniert nicht, auch mit dem Probeprogramm nicht ....

Dieser Post wurde am 14.08.2015 um 12:41 Uhr von Krab editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
14.08.2015, 16:28 Uhr
Hans
Library Walker
(Operator)


Hi,

gibt es denn keine Beispiele dafür, wie man sowas Handhabt, bzw. eine Anleitung dazu? - Oder ist die mal wieder so kompliziert, dass man als Anfänger nicht durchsteigt, weil man nicht weis, wo man suchen soll bzw. muss?

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: