[c++]Verarbeitung von in einem String enthaltenen Zahlen

PasswortGeheim

Grünschnabel
Hallo,
dieses Problem beschäftigt mich seit einiger Zeit: Eine Zeile wird eingelesen, dessen Zahlen schließlich selektiert, verarbeitet, und dann, möglichst als weitreichende Zahl(double), ausgegeben werden sollen. Mein Ansatz:

Code:
getline(cin, Eingabe);

Fund=Eingabe.find_first_of("0123456789");

int n(0);
string Speicher[]={};

while(!string::npos)
{
Speicher[n]=Fund=Eingabe.find_first_of("0123456789", Fund++);
n++;
}

int m(0);
double Zahl[]={};
double Summe;

while(m<=n)
{
Zahl[m]=Speicher[m];
Summe+=Zahl[m];
m++;
}
cout<<Summe;
 
Hi.
Hallo,
dieses Problem beschäftigt mich seit einiger Zeit: Eine Zeile wird eingelesen, dessen Zahlen schließlich selektiert, verarbeitet, und dann, möglichst als weitreichende Zahl(double), ausgegeben werden sollen. Mein Ansatz:

Code:
getline(cin, Eingabe);

Fund=Eingabe.find_first_of("0123456789");

int n(0);
string Speicher[]={};
Hier hast du erfolgreich ein Array von Strings der Größe 0 erstellt. Du kannst also 0 Strings darin speichern! Außerdem ist ein String bereits ein Array von Zeichen.
Code:
while(!string::npos)
{
Speicher[n]=Fund=Eingabe.find_first_of("0123456789", Fund++);
n++;
}
Hier hast du eine while Schleife programmiert, die niemals ausgeführt wird da string::npos ein von 0 verschiender Wert ist.

Du solltest in der Schleifenbedingung prüfen, ob Fund != string::npos ist.

Außerdem liefert die find_first_of Methode eine Position zurück und nicht das Zeichen an der Position.

So ganz hab ich dein Problem nicht verstanden. Du möchtest aus einem String alle Ziffern extrahieren, wobei alle nicht-Ziffern ignoriert werden, oder wie?

Zahlen in einem String kann man problemlos mit einem istringstream in double Werte konvertieren:
C++:
#include <sstream>

istringstream instr("132.454e-10");
double d;

if (instr >> d) {
  cout << "Der Wert beträgt: " << d << endl;
}
Gruß
 
Zurück