Hallo,
ich versuche so etwas zu programmieren wie eine Konsole.
Also es gibt bestimmte Befehle und auf die hin passiert etwas.
Ich möchte nun das es auch möglich sein soll Parameter an die Befehele zu hängen.
Also z.b. könnte so eine Zeichenkette so aussehen: help german easy(Sinn jetzt mal dahingestellt)
Dann soll er erkennen ok er will Hilfe und dann soll bei Hilfe geschaut werden was mit german angefangen werden kann usw.
Ich hab mir überlegt wie das am sinvollsten gehen kann.
Meine letzte Überlegung war es mit switch/case zu probieren.
Ganz unabhängig davon wie es am Ende ausgewertet wird möchte ich das die Zeichenkette erst einmal zerlegt wird.
Also soll daraus:
help
german
easy gemacht werden. Jeweils z.b. in ein Arrayfeld
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#include <iostream>
#include <string>
using namespace std;
int main()
{
//Variabeln deklarieren
string sEingabe;
getline(cin,sEingabe); //Eingabe des Nutzers abfragen
cout << sEingabe << "\n" ; //Eingabe zur Sicherheit ausgeben
cout << sEingabe.length() << "\n" ; //Länge des Strings ausgeben
//String zerlegen
int j = 0;//Feldnummer des Arrays
int z = 0;//Zwischenvariable, um den Anfang des Wortes zu markieren
string aEingabe[4];//5 Felder maximal
for (unsigned int i = 0 ; i < sEingabe.length(); ++i)//Solange bis jede Position durchlaufen wurde
{
if (sEingabe[i] == ' ')//Wenn die aktuelle Position ein Leerzeichen ist
{
cout << "Es ist ein Leerzeichen \n";
cout << z << " ist z \n" ;
cout << i << " ist i \n" ;
aEingabe[j] = sEingabe.substr(z,i);//Schneide von z bis i ab und speichere das Wort
z = i+1;//z ist jetzt die Stelle hinter dem letzten Leerzeichen
cout << z << " ist z nachher\n" ;
cout << aEingabe[j] << " ist das Arrayfeld \n" ;
++j;//Damit die Array Felder befüllt werden muss j steigen
}
else {cout << "Es ist kein Leerzeichen \n";}
}
return 0;
}
|
Leider funktioniert das nicht so wie ich es gerne hätte.
Dabei verstehe ich leider noch nicht so genau warum.
Sieht einer den Fehler?
lg
easyMaxi