Konvertierung von String to Integer klappt nicht
-
Hallo, ich habe ein kleines Proggy geschrieben welches aus einer Potenzeingabe die Basis und den Exponenten extrahieren soll.
#include <iostream> #include <string> #include <conio.h> using namespace std; string input, sbas, sexpo, sletter; int pos; int main() { cout<<"Bitte Potenz eigeben: "; cin>>input; cout<<endl<<endl; pos = static_cast<int> (input.find("^",0)); for(int i=0;i<pos;i++) { sletter = input[i]; sbas.append(sletter); } int bas = atoi(sbas); for(int j=pos+1;j< static_cast<int> (input.length());j++) { sletter = input[j]; sexpo.append(sletter); } int expo = atoi(sexpo); cout<<"Basis: "<<bas<<endl; cout<<"Exponent: "<<expo<<endl; getch(); return EXIT_SUCCESS; } //Fehlermeldung: Cannot Convert von string to const charWarum will der nach const char casten????
MfG Heinz
-
Hallo
Da du nicht schreibst bei welcher Zeile die Fehlemeldung kommt, gehe ich von dieser Stelle aus.
int expo = atoi(sexpo);Und da ist klar warum, denn atoi verlangt const char* als Parameter.
Wie du die Umwandlung mit C++ Mitteln löst kannst du in dem C++FAQ-Beitrag Einmal String und zurück nachlesen.bis bald
akari
-
atoi erwartet einen const char*, deswegen musst du atoi(sexpo.c_str()) aufrufen, dann sollte es funktionieren!
KaPtainCugel
EDIT 2 late

-
Heinz Spilker schrieb:
...
...sexpo, ......
Ist der Variablenname Dein Ernst ?

Du solltest auch die Gesundheit der Leute bedenken, die Deinen Quellcode später mal Warten müssen.Gruß,
Simon2.
-
jo thx das funzt so.
@Simon2
Nunja das ist ein exponent mit dem Typ String, also sexpo ^^
-
Ich hab nochmal ein Problem mit folgender Zeile:
*res = *res * bas;Hier soll *res mit der Integervariablen "bas" multipliziert werden. Wenn ich die Zeile jedoch durch den Debugger jage, fällt auf, dass er nicht nur *res auf das Ergebnis setzt, sondern auch "bas". Warum ist das so???
-
Hallo

verwende verständliche Begriffe.dass er nicht nur *res auf das Ergebnis setzt
Was bedeutet das?
bis bald
akari
-
Heinz Spilker schrieb:
jo thx das funzt so.
@Simon2
Nunja das ist ein exponent mit dem Typ String, also sexpo ^^Also mal weg vom "Spaßigen": Ich würde das nicht machen.
Was, wenn Du expo nicht mehr als String, sondern als TString oder als MyCompaniesSpecialString darstellen willst .... willst Du dann wirklich durch den gesamten Code gehen und die Variable umbenennen ? Bei einem so kurzen Programm spielt das vielleicht noch keine Rolle, aber in größeren Teilen wird so eine Regelung sehr schnel sehr lästig .... oder (noch schlimmer) man wird inkonsequent, was zu mehr Verwirrung und Fehlerquellen führt.Gruß,
Simon2.
-
Beispiel:
*res = 5
bas = 4Nachdem er folgende Zeile ausgeführt hat
*res = *res * bas;
*res = 20
bas = 20Why??? Ich erwarte
*res = 20
bas = 4
-
Heinz Spilker schrieb:
Ich erwarte
*res = 20
bas = 4Ja, und genau das kommt auch raus.
-
Das kann ich mir nur dann vorstellen, wenn res auf bas zeigt.
Oder der Debugger ist schon ins Wochenende abgetaucht.
