string to int



  • Ich habe in meinem aktuellen Projekt ein ziemliches Problem:
    Mein Programm muss an einer Stelle einen string (C++: String-Klasse) in eine Int-Variable umwandeln.
    Ich habe bereits per Google gesucht und in verschiedenen Foren geguckt, aber noch keine bei mir passende Lösung gefunden.
    Es gibt für mich auch nicht die Möglichkeit, die Zahl gleich in einen anderen Variablen-Typ zu schreiben.

    Kennt jemand von euch eine Funktion, womit ich nun die Zahl, die in dem String steht, in eine Int-Variable schreiben kann?

    Danke schon mal für die Hilfe,
    Prof. MAAD



  • atoi oder mit nem stream. steht genauer in der c++ faq wenn ich mich nicht irre.



  • Erstmal danke für die schnelle Antwort.
    Ich habe den entsprechenden Artikel in den FAQs gefunden und die Möglichkeit über
    "stringstream" ausprobiert. Ich bekomme daraufhin vom Compiler (gcc 3.3.1) folgende Fehlermeldung:

    error: ISO C++ forbids comparison between pointer and integer
    

    Ich hoffe jemand kann mir sagen, wo der Fehler liegen könnte
    Code:

    # include <iostream>
    # include <string>
    # include <sstream>
    using namespace std;
    
    int i;
    stringstream tempstream;
    string num1;
    
    tempstream<<num1;
    tempstream>>int1;
    
    cout<<int1;
    

    Wobei das natürlich kein richtiges Prog is (der Code). Ich habe jetzt nur die Stellen übernommen, die relevant sind. Ich kann sicher sein, dass in "num1" eine Zahl steht.

    Danke im Voraus,
    Prof. MAAD



  • Hallo

    Was ist int1? Wolltest du statt dessen vielleicht die Variable i als Ziel?
    Dann funktioniert es.

    bis bald
    akari



  • Du hast recht, ich hab mich vertippt, bin durcheinandergekommen.
    Da wo jetzt "int1" steht sollte eigentlich die Variable "i" stehen.
    Aber im Programm selbst isses richtig, und ich bekomme trotzdem diesen Fehler (siehe oben).

    Kann mir jemand sagen, woran es liegen könnte, oder hat jemand noch ne gute Alternative?

    Danke in Voraus,
    Prof. MAAD



  • Hallo

    Bei welcher Zeile genau kommt die Fehlermeldung?

    bis bald
    akari



  • OK, ich habe nochmal genau hingeguckt, und habe bemerkt, dass der Fehler wo anders liegt.
    Vor dem Umwandeln führe ich eine if-Abfrage durch:

    if(num1[0]=="$")
    {
        ...
    }
    

    Der Fehler liegt laut Compiler in der if-Abfrage.
    "num1" ist hierbei ein String (C++-String-Klasse).

    Kann mir jemand sagen, wo der Fehler liegt

    Danke im Voraus,
    Prof. MAAD



  • Hallo

    Chars werden durch einfache Hochkommas dargestellt, im gegensatz zu den Strings :

    if(num1[0]=='$')
    {
        ...
    }
    

    bis bald
    akari



  • @akari: Vielen Dank, es hat funktioniert!
    Ich hätte sicher noch ne Weile gebraucht, bis ich das gefunden hätte.

    Danke auch beiden!

    Prof.MAAD


Anmelden zum Antworten