auf int beschränken



  • hallo

    kurze frage:

    wie kann ich in c++ sagen:

    wenn Variable "a" vom typ int dann mach das ansonsten gib fehlermeldung aus

    quasi das man nur ein variable vom typ int un nicht char oder ähnlichem eingeben kann

    grtüße manuel



  • Hmm... ich hätte ne idee, bin mir aber sicher, dass man das auch eleganter lösen könnte :

    if (sizeof(a) == sizeof(int))
    

    Das funktioniert, es gibt aber halt auch typen, die die gleiche größe haben^^



  • Welchen Typ eine Variable hat, legst du doch von vornherein fest. Und indem du deine Funktion als void func(int a) definierst, sorgst du dafür, daß dieser Funktion nur int-Werte übergeben werden können (oder Typen, die nach int konvertiert werden können - aber dann hast du keine Möglichkeit festzustellen, ob da eine Konvertierung dazwischenstand).



  • Mich würde mal interessieren,wo man so einen Typvergleich brauch.



  • man könnte das gebrauchen um eingaben über zb. << cin zu überprüfen.
    ist es kein int dann false.
    ich schätze mal das es so gemeint ist.
    vielleicht meint er ja
    isdigigt()
    ?



  • schön das es direkt mal so viele antworten gab kann nur leider mit den meisten nicht viel anfangen da ich mich noch nicht so weit mit c++ auskenne (machen das seit ca3 monaten in der schule)

    ich habe die cpp datei mal unter http://manuel774.de/schule/ASCII-Programm.cpp bereit gestellt damit jeder reinschauen kann und vielleicht besser versteht was ich meine

    das programm um das es sich handelt hat folgende funktionen:
    es kann den wert zu einem zeichen ausgeben
    es kann das zeichen zu einem wert ausgeben
    und
    in zwei darstellungsweisen die komplette ASCII-tabelle auszugeben

    problem:
    startet mal das programm->geht in die zweite auswahl->und gebt ein zeichen was keine zahl ist ein....

    grüße manuel



  • Achso, das geht eigentlich recht einfach 😉

    cin setzt ein Fehlerflag, wenn etwas ungültiges reingekommen ist. Das kannst du auswerten und entsprechend darauf reagieren:

    cin>>eingabewert;
    if(!cin)//Fehler aufgetreten
    {
      cout<<"Falsche Eingabe!!"<<endl;
      cin.clear(); //Fehlerflags zurücksetzen
      cin.ignore();//Fehleingabe verwerfen
    }
    


  • afaik müsste das der code dafür sein:

    if(typeof(a).name() == typeof(int).name())
    {
    //a ist vom typ int
    }
    else
    {
    //a ist nicht vom typ int
    }
    

    auserdem:
    es heist

    int main()
    

    und NICHT void !!!



  • was brauche ich den für eine header datei für den lösungsvorschlag von shade37337 ??

    grüße



  • Gar keinen - aber wenn ich mir deinen Quellcode ansehe, hat der Ansatz auch recht wenig mit deinem Quellcode zu tun. (du hast deine Variable als int deklariert, also WIRD dir auch jeder Versuch sagen, daß das ein int ist - ob du erfolgreich etwas dort einlesen konntest, ist die andere Sache (aber das kann dir cin mitteilen, wenn du danach fragst))



  • mit CStolls Lösung klappts

    danke dafür

    grüße manuel


Anmelden zum Antworten