Umwandlung String-Variablen in andere Datentypen

Umwandlung String-Variablen in andere Datentypen

Teil 43 des Workshops "C++ Programmieren lernen"

von -
Umwandlung String-Variablen in andere Datentypen

In C++ ist es meistens unproblematisch einen Datentyp in einen anderen umzuwandeln. Mit dem Inhalt einer String-Variablen kann man normalerweise keine arithmetischen Operationen durchführen. Weil ein String-Objekt kein natürlicher C++ Datentyp ist, kann der Inhalt nicht in einen anderen Datentyp umgewandelt werden.

 

Eine Lösung bietet die C++ Bibliothek <sstream>, die es durch das stringstream-Objekt ermöglicht, den Inhalt eine Strings in einen numerischen Datentyp oder einen numerischen Datentyp in einen String umzuwandeln. Um solche Operationen auszuführen muss die Bibliothek durch den Befehl #include <sstream> am Anfang des Programmes eingefügt werden.

Die Werte können in einem stringstream-Objekt entgegen genommen und mit dem Befehl cout ausgegeben werden. Aus dem stringstream-Objekt lässt sich außerdem Inhalt extrahieren und mit dem cin-Operator weiter verarbeiten. Um das stringstream-Objekt zu gebrauchen, muss dieses erst in seinen Urzustand zurückgesetzt werden. Das geht mit einem leeren String und dem Setzen des Status-Bits auf clear. Den genauen Zusammenhang zeigt das folgende kleine Programm.

Den genauen Zusammenhang zeigt das folgende Programmbeispiel:

 

Übung: Zeichenketten eingeben

Programm: convert.cpp

 

#include <string> 

#include <sstream>

#include <iostream>

using namespace std;

int main ()

{

 string ausdruck = "100";

 int nummer = 100;

 int num; //Zur Speicherung des konvertierten Strings

 string text; //Zur Speicherung des konvertierten Integer-Wertes

 stringstream stream; //Für die Umwandlung

 stream << ausdruck; //String laden

 stream >> num; //Nach Integer extrahieren

 num /= 4;

 cout << "Integer-Wert: " << num << endl;

 stream.str (""); //Inhalt leeren

 stream.clear(); //Bit-Flag leeren

 stream << nummer; //Integer-Wert laden

 stream >> text; //String extrahieren

 text += " Prozent";

 cout << "String-Wert: " << text << endl;

 system ("pause");

 return 0;

}

 

Speichern Sie den Programmcode, kompilieren Sie anschließend das Programm und werfen Sie einen Blick auf das Ergebnis.

Werte umwandeln mit dem stringstream-Objekt.
Werte umwandeln mit dem stringstream-Objekt.

 

Praxistipp: Bei einem nicht-leeren stringstream-Objekt hat das Bit-Flag den Status good, bad, eof oder fail. Deshalb muss das Flag vor der Benutzung des stringstream-Objekts mit der Funktion clear() geleert werden, wie im letzten Programm demonstriert wurde. Die Funktion length() kann anstelle von size() benutzt werden, um die Länge eines Strings einschließlich Leer- und Satzzeichen zu ermitteln.

 

 

Dieser Artikel ist Teil unseres kostenlosen Workshops “C++ Programmieren lernen” – Geeignet für Einsteiger und Fortgeschrittene. Machen auch Sie mit und lernen Sie in 50 Artikeln, wie Sie Programme selbst schreiben!

 

 

Artikelbild: Fotolia / bramgino

 

Keine Kommentare

Kommentar hinterlassen (Freischaltung erfolgt in Kürze)