2016-08-28 5 views
1

Wie nimmt man die Eingabe als String und identifiziert jedes Zeichen als char, int oder float in C++?Wie nimmt man die Eingabe als String und identifiziert jedes Zeichen als char, int oder float?

Beispiel: Wenn ich möchte, dass ein Benutzer ein einfaches 3+2 = statement eingibt, dann möchte ich, dass das Programm entscheidet, ob ich subtrahiere oder irgendwelche anderen arithmetischen Operationen addiere und dann die entsprechende Antwort entsprechend ausgäbe.

+0

Sie könnten jedes Zeichen in Ihrer Zeichenfolge durchlaufen und identifizieren, wo die Operation ist (in diesem Fall +). Sobald Sie die Position der Operation kennen, nehmen Sie jedes Zeichen vom Anfang der Zeichenfolge bis zur Operation als ersten Operanden und jedes Zeichen von der Operation bis zum Ende der Zeichenfolge als zweiten Operanden. Sie können 'atof' verwenden, um die Strings in Doubles umzuwandeln, und dann die Operanden mathematisch berechnen. Verwenden Sie eine 'if'-Anweisung, um das Operation-Zeichen zu identifizieren und die entsprechende Operation auszuführen. – Swemoph

+0

Es geht um Tokenizing. Google wäre eine große Hilfe –

+1

Sie könnten dies mit Boost Spirit tun, werfen Sie einen Blick auf das Beispiel zur Verfügung gestellt: https://github.com/djowel/spirit_x3/blob/master/example/x3/calc5.cpp – Roby

Antwort

1

Sie können Ihre Eingabezeichenfolge mit std::string.substr(...) oder std::regex in Token setzen. Sobald Sie es in Token haben, sollten Sie sicherstellen, dass die Syntax korrekt ist. Dann führen Sie einfach die Syntax aus.

Hier ist, wie Sie Ihre Sprache definieren:

  • Seperator = ''
  • Operator = '+', '-', '*', '/'
  • Integer = \ d +
  • Float = \ d *. \ D +
Verwandte Themen