![]() |
3. Variablen: Datentypen konvertieren |
![]() |
||
|
||||
Die Daten im Detail: |
||||
istringstream(jahr1) >> jz1; | ||||
Für die Konvertierung
eines Strings in eine Ganzzahl gibt es unter C/C++ mehrere Lösungen.
Unter C++ ist meine bevorzugte Methode, die mit den sogenannten
stringstreams. Für die Konvertierung von Strings in
Ganzzahlen benötigt man einen istringstream und zwei
Variablen, eine String-Variable (hier jahr1) und eine int-Variable
(hier jz1). Man übergibt mittels istringstream(jahr1) die in Klammern stehende String-Variable jahr1 dem stringstream. Mittels des >>-Operators wird der String der int-Variablen übergeben.
Es ist auch möglich mehrere Variablen aneinander zu hängen. Allerdings muß man dann eine stringstream-Variable generieren. Eine direkte Übergabe ohne Variable führt zu einer Fehlermeldung (ambiguous overload for operator>>). Unter C gibt es noch
eine weitere Lösung. Dort würde der Befehl folgendermaßen
aussehen: |
||||
jahreszahl=jz1+jz2; | ||||
Nachdem wir beide Strings in Ganzzahlen konvertiert haben, kann man diese miteinander multiplizieren. | ||||
ostringstream temp3; temp3 << jahreszahl; zahl=temp3.str(); |
||||
Um später die Strings
miteinander verketten zu können, müssen wir die Ganzzahl-Variable
jahreszahl wieder in eine String-Variable ändern. Der
umgekehrte Weg geht mittels ostringstream. Dabei wird zuerst
mittels des <<-Operators dem ostringstream temp3
der Ganzzahl-Wert der Variablen jahreszahl übergeben.
Anschließend wird mit zahl=temp3.str() dem String zahl
die in temp3 abgelegte Unter C lautet der Befehl: |
||||
ausgabe=name+" "+beispiel+" "+bj+" "+zahl; | ||||
Unter C++ ist es ein leichtes Strings miteinander zu kombinieren in dem man sie einfach wie bei einer Rechenoperation mittels des +-Operators aneinander hängt. Obiges Programmbeispiel gibt nun folgendes aus: Zuerst den Wert der String-Variablen name, dann ein Leer-Zeichen, dann den Wert des char-Arrays beispiel, dann wieder ein Leerzeichen, anschließend den Wert der String-Variablen bj, wieder ein Leer-Zeichen und letztendlich unsere konvertierte String-Variable zahl. Die Bezeichnung des char-Arrays beispiel ist deswegen so gewählt, da diese Variable als Beispiel dafür dient, daß man char-Arrays nicht in Strings konvertieren muß, sondern gleich so wie sie sind übernehmen kann um sie an einen String anzuhängen. Technisch gesehen ist ein String ja ein char-Array. | ||||
cout << ausgabe << endl; | ||||
Und hier nun die Ausgabe von name+" "+beispiel+" "+bj+" "+zahl: |
||||
string befehl="echo \""+ausgabe+"\""; system(befehl.c_str()); |
||||
Wie man im obigen Beispiel bei der Aneinanderkettung von Strings gesehen hat, ist eine Umwandlung von char in string oder umgekehrt
nicht von Nöten. Es gibt jedoch seltene Fälle, in denen
eine String-Variable in char konvertiert werden muß. Zum Beispiel
weil ein Befehl mit der String-Variablen verknüpft werden soll,
dieser jedoch nur char zuläßt. Wie im Beispiel des system-Befehls.
Mittels des system-Befehls läßt sich die Ausführung
des Programms unterbrechen und ein anderes Programm ausführen.
Nach Beendigung des fremden Programms, wird das eigene Programm fortgesetzt.
Der system-Befehl aktzeptiert jedoch nur eine char-Variable. In solchen
Fällen kann man mittels c_str() die String-Variable für
den Befehl in eine char konvertieren. Im obigen Beispiel wird somit
der Befehl echo "Udo ist BJ 1971" ausgeführt, was genau wie bei cout die Ausgabe auf der Konsole bewirkt. |
||||
![]() |
Index |
![]() |
||