bekomme immer 0 als ausgabe



  • hallo,
    hier der code:

    #include<iostream>
    #include<string>
    #include<stdlib.h>
    using namespace std;

    int main()
    {
    	char wort[20];
    	int zahl;
    	cout<< "Wort eingeben: "<< endl;
    	cin>> wort;
    
    	zahl = atoi(wort);
    	cout<< zahl << endl;
    
    	return 0;
    }
    

    ich bekomme immer 0 als zahl ausgegeben. ist das normal?

    mfg dr.jones



  • 1. Du darfst auch nur Zahlen eingeben. Bei mir klappt es wenn ich nur Zahlen eingebe, wie "123" u.s.w.

    2. Wenn du schon mit c++ arbeitest dann benutz auch strings anstatt char[] oder char*:

    using namespace std;  //nicht vergessen sonst musst du immer std::cout und so schreiben
    
    int main() 
    { 
        string wort; 
        int zahl; 
        cout<<"Wort eingeben: "<<endl; 
        cin>>wort; 
    
        zahl = atoi(wort.c_str());  //c_str() wandelt einen string in char* um, damit die funktion auch klappt
    
        cout<< zahl << endl; 
    
        return 0; 
    }
    

    Achja so wie oben funzt es bei mir.

    Gruß KaraHead



  • Und stringstream statt atoi...



  • Mis2com schrieb:

    Und stringstream statt atoi...

    Es geht aber noch mehr L33T:

    // leichter cast um Zahlen in Strings und umgekehrt zu casten
    	template<typename A, typename T> __forceinline const A lexical_cast(const T& source) 
    	{
    		std::stringstream s;
    		s << source;
    
    		A destination;
    		s >> destination;
    
    		return (destination);
    	}
    


  • Mis2com schrieb:

    Und stringstream statt atoi...

    ich lege ein stringstream-Objekt an, um eine Zeichenkette in eine Zahl zu wandeln... Genau.

    Nur weils atoi in C schon gab, heißt das nicht, dass mans nicht mehr in C++ benutzen soll.



  • DrGreenthumb schrieb:

    Nur weils atoi in C schon gab, heißt das nicht, dass mans nicht mehr in C++ benutzen soll.

    Also wenn man von der größe der exe ausgeht ist die C-Lib ein bischen zu groß. Da würde es schon sehr viel Sinn machen die hardcore C++ variante zu nehmen, da die kleiner ist.

    Oder man baut so einen richtig geilen L33T cast wie den lexical_cast von mir, der kann mehr als nur atoi! Sogar in beide richtungen 😉



  • nix da schrieb:

    Also wenn man von der größe der exe ausgeht ist die C-Lib ein bischen zu groß. Da würde es schon sehr viel Sinn machen die hardcore C++ variante zu nehmen, da die kleiner ist.

    Wo ist das so? Von welchem Compiler sprichst du?


Anmelden zum Antworten