Erstes Zeichen eines Strings herausfinden?
-
Hallo,
Zurzeit versuche ich einen kleinen taschenrechner zu programmieren. Dabei soll die Rechnung einfach in einem String eingegeben werden. Ich arbeite zurzeit mit der Funktion find: (z.B.)
*.find_first_of("+", 0) != string::npos *.find_first_of("+")+2Bisher kein Problem, damit lässt sich der Rechenoperator und die 2. eingegebene Zahl herausfinden. Leider weiss ich nicht, wie groß die erste zahl wird, also müsste ich vom ersten Zeichen des Strings ausgehen. Hat jemand eine Idee wie sich so etwas ermitteln lässt? Wäre sehr Dankbar über jede Hilfe

-
Erstes Zeichen eines Strings herausfinden?
Du solltest zuerst prüfen ob es sich nicht um einen leeren String handelt dann kannst du die eckigen Klammern verwenden:
if(!s.length()) return; c=s[0];
-
Danke, hatte anfangs Verständnisprobleme, aber inzwischen hab ich es auch in meine Programm ans laufen gekriegt

-
Dieser Thread wurde von Moderator/in Unix-Tom aus dem Forum MFC (Visual C++) in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
TGGC schrieb:
Wenn du wirklich einen String so parsen willst, das ist das ein ziemlich aufwendiger Algorithmus.
Naja, bei 'nem simplen Taschenrechner nimmt C++ einem ja einiges ab:
int a, b; char op; while ( cin >> a >> op >> b ) { ... }Damit geht "100 + 12" oder "1*2" hervorragend.
-
Und wie faengst du Eingaben ab, die nicht dem Format entsprechen? f'`8k
AutocogitoGruß, TGGC (Was Gamestar sagt...)
-
TGGC schrieb:
Und wie faengst du Eingaben ab, die nicht dem Format entsprechen?
cin müsste das fail-Bit bekommen, falls die Integer nicht geparst werden können und "op" kann man auf +-*/ abfragen.
-
Badestrand schrieb:
TGGC schrieb:
Und wie faengst du Eingaben ab, die nicht dem Format entsprechen?
cin müsste das fail-Bit bekommen, falls die Integer nicht geparst werden können und "op" kann man auf +-*/ abfragen.
man könnte so gar nen extra datentyp für op machen...