filehandling einfaches beispiel



  • //============================================================================
    // Name        : dd.cpp
    // Author      : 
    // Version     :
    // Copyright   : Your copyright notice
    // Description : Hello World in C++, Ansi-style
    //============================================================================
    
    #include <iostream>
    #include <fstream>
    using namespace std;
    
    int main() {
    
    	ofstream outputf;
    	ifstream inputf;
    	int *ptr=nullptr;
    	int a=3;
    	//ptr=&a;
    
    	char daten[100];
    	int b=5;
    	outputf.open("dateic5.dat", ios::out);
    
    	        outputf << "hallo";
    	        outputf << "das ";
    	        outputf << ptr  ;
    
    	       outputf.close();
    
    	       inputf.open("dateic5.dat",ios::in);
    
    	       inputf >> daten;
    	      // cout << daten<<endl;
    	       inputf >> daten;
    	      // cout << daten<<endl;
    	       inputf >> daten;
    	       if( daten==0)
    	       {
    	    	   cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
    	    	  // cout << daten<<endl;
    
    	       }
    	       else {
    
    	    	   cout << daten<<endl;
    
    	       }
    
    	return 0;
    }
    

    Warum wird die if bedingung nicht erfüllt wenn doch daten == 0 ist?



  • //============================================================================
    // Name        : dd.cpp
    // Author      : 
    // Version     :
    // Copyright   : Your copyright notice
    // Description : Hello World in C++, Ansi-style
    //============================================================================
    
    #include <iostream>
    #include <fstream>
    using namespace std;
    
    int main() {
    
    	ofstream outputf;
    	ifstream inputf;
    	int *ptr=nullptr;
    	int a=3;
    	//ptr=&a;
    
    	char daten[100];
    	int b=5;
    	outputf.open("dateic5.dat", ios::out);
    
    	        outputf << "hallo";
    	        outputf << "das ";
    	        outputf << ptr  ;
    
    	       outputf.close();
    
    	       inputf.open("dateic5.dat",ios::in);
    
    	       inputf >> daten;
    	      // cout << daten<<endl;
    	       inputf >> daten;
    	      // cout << daten<<endl;
    	       inputf >> daten;
    	       if( daten[0]==48)
    	       {
    	    	   cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
    	    	  // cout << daten<<endl;
    
    	       }
    	       else {
    
    	    	   cout << daten<<endl;
    
    	       }
    
    	return 0;
    }
    


  • "daten" ist nicht null, es ist ein Array, kein nullpointer.
    Btw, der Codestyle sollte deutlich verbessert werden.



  • DarkShadow44 schrieb:

    "daten" ist nicht null, es ist ein Array, kein nullpointer.
    Btw, der Codestyle sollte deutlich verbessert werden.

    Das ist kein Array sondern ein String.



  • Nein, es ist ein array aus char. Für string verwendet man in c++ std::string. 😉


  • Mod

    DarkShadow44 schrieb:

    Nein, es ist ein array aus char. Für string verwendet man in c++ std::string. 😉

    Unsinn. Ein String ist jedes Objekt, dessen intendierter Zweck die Darstellung einer Zeichenkette ist. Dazu gehören nullterminierte char Arrays offensichtlich dazu, und sie würden auch von so gut wie allen Interfaces, die einen "String" erwarten, akzeptiert werden.

    Ich schließe mich allerdings der Aussage an, der TE solle besser std::string einsetzen. Ich würde auch die Ziffer '0' als solche schreiben und nicht durch ihren ASCII Code (48) darstellen... 😃



  • D.I schrieb:

    Das ist kein Array sondern ein String.

    Das ist kein string sondern ein array! BTW: Von Überheblichkeit sollte man nur dann Gebrauch machen wenn man was drauf hat...


Anmelden zum Antworten