Hallo,
mein erstes "Programm" indem ich einfach mal ausprobieren wollte wie was(das) geht ist eine Konsolenanwendung in der man etwas eintippt und daraufhin etwas passiert.
Also ähnlich wie cmd.exe.
Ich poste einfach mal meinen Code und würde mir freuen, wenn mal jemand ein Auge drauf wirft und mir Tipps gibt wie man was sinvoller macht.
Strings.cpp
|
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
38
39
40
41
42
43
44
|
#include <iostream>
#include <string>
#include <cstdlib>
#include <stdlib.h>
#include "Funktionen.h"
#include <algorithm>
using namespace std;
//Zerlegt einen String nach den Leerzeichen
void StringZerlegen()
{
//Variabeln deklarieren
string sEingabe; //String der zerlegt werden soll
int j = 0;//Feldnummer des Arrays
int z = 0;//Zwischenvariable, um den Anfang des Wortes zu markieren
int iLeerzeichen;//Variable um die Leerzeichen die zählen und so das Array zu erzeugen
string *pEingabe = NULL;//Zeiger auf das Array;
//String einlesen
getline(cin,sEingabe); //Eingabe des Nutzers abfragen
//Array dynamisch erzeugen
iLeerzeichen = count(sEingabe.begin(), sEingabe.end(), ' ')+1;
pEingabe = new string[iLeerzeichen];
//String zerlegen
for (unsigned int i = 0 ; i < pEingabe.length() && j < 5; ++i)//Solange bis jede Position durchlaufen wurde
{
if (pEingabe[i] == ' ')//Wenn die aktuelle Position ein Leerzeichen ist
{
pEingabe[j] = pEingabe.substr(z,i-z);//Schneide von z ab und speichere das Wort mit der Länge i
z = i+1;//z ist jetzt die Stelle hinter dem letzten Leerzeichen
++j;//Damit die Array Felder befüllt werden muss j steigen
}
else {}
}
pEingabe[j] = pEingabe.substr(z);
//Funktionsaufruf des Menüs und Übergabe der einzelnen Teile
Steuerung(aEingabe);
}
|
Funktionen.h
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include <iostream>
#include <string>
using namespace std;
//Prototypen
//strings.cpp
void StringZerlegen ();
//Generelle Steuerung des Programms
void Steuerung(const string a[]);
|
Steuerung.cpp
|
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
|
#include <iostream>
#include <string>
#include <cstdlib>
#include <stdlib.h>
#include "Funktionen.h"
using namespace std;
void Steuerung(const string a[])
{
//Da Switch/case mit Strings nicht funktioniert.
if (a[0]=="exit")
{
exit(0);
}
if (a[0]=="ping")//Damit was passiert. Testfunktion mittels dem System
{
string ip = a[1];
system(("ping " + ip).c_str());//Ab hier nimmt das System mir alles ab
}
else {cout << "Befehl unbekannt\n";}
}
|
main.cpp
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include <iostream>
#include <string>
#include "Funktionen.h"
using namespace std;
int main()
{
do{
StringZerlegen();
}while(1!=2);
return 0;
}
|
Dieser Code funktioniert
Nicht!!!
Ich versuche gerade das Array was die einzelnen Befehlteile zerlegt dynamisch per new und einem Zeiger zu erzeugen. Davor habe ich es mit einem festen Wert von max. 5 Befehlsabschnitte probiert.
Leider kann ich dann nicht mehr so Dinge tun wie pEingabe.length() -> Warum nicht? Und wie kann ich das umgehen?
PS: Ja ich weiß system() ist nicht so das wahre.
Ich wollte auch nur ein wenig rumprobieren (:
lg
easyMaxi