Praktische Konvertierungsbeispiele
Konvertierungsszenarien
stringstream
bietet leistungsstarke Typkonvertierungsfähigkeiten für verschiedene Datentypen.
Konvertierung von Zeichenketten in numerische Werte
Zeichenkette in Ganzzahl
std::string str = "42";
std::stringstream ss(str);
int number;
ss >> number; // number = 42
Zeichenkette in Gleitkommazahl
std::string str = "3.14159";
std::stringstream ss(str);
double value;
ss >> value; // value = 3.14159
Konvertierung von numerischen Werten in Zeichenketten
Ganzzahl in Zeichenkette
std::stringstream ss;
int number = 123;
ss << number;
std::string str = ss.str(); // str = "123"
Mehrfache Typkonvertierung
std::stringstream ss;
int age = 30;
double height = 1.75;
std::string name = "John";
ss << "Name: " << name
<< ", Age: " << age
<< ", Height: " << height;
std::string result = ss.str();
Komplexer Konvertierungsablauf
graph TD
A[Eingabezeichenkette] --> B[Stringstream]
B --> C{Parsen/Konvertieren}
C --> D[Mehrere Datentypen]
D --> E[Verarbeitete Ausgabe]
Konvertierungstechniken
Technik |
Eingabe |
Ausgabe |
Beispiel |
Zeichenkette in Ganzzahl |
"123" |
Ganzzahl |
123 |
Zeichenkette in Gleitkommazahl |
"3.14" |
Gleitkommazahl |
3.14 |
Ganzzahl in Zeichenkette |
42 |
"42" |
Konvertierung |
Sichere Konvertierungsmethoden
bool safeConvert(const std::string& input, int& result) {
std::stringstream ss(input);
return !!(ss >> result);
}
int main() {
std::string str = "456";
int number;
if (safeConvert(str, number)) {
std::cout << "Konvertiert: " << number << std::endl;
} else {
std::cout << "Konvertierung fehlgeschlagen" << std::endl;
}
return 0;
}
Parsen komplexer Datenstrukturen
struct Person {
std::string name;
int age;
double salary;
};
Person parsePerson(const std::string& data) {
std::stringstream ss(data);
Person p;
std::getline(ss, p.name, ',');
ss >> p.age;
ss.ignore(); // Komma überspringen
ss >> p.salary;
return p;
}
int main() {
std::string personData = "John Doe,35,50000.50";
Person person = parsePerson(personData);
}
Fortgeschrittene Konvertierungsszenarien
CSV-Parsing
std::vector<std::string> splitCSV(const std::string& line) {
std::vector<std::string> result;
std::stringstream ss(line);
std::string item;
while (std::getline(ss, item, ',')) {
result.push_back(item);
}
return result;
}
Fehlerbehandlung bei Konvertierungen
bool validateConversion(const std::string& input) {
std::stringstream ss(input);
int value;
// Prüfen, ob die Konvertierung möglich ist
return (ss >> value) && ss.eof();
}
Entdecken Sie weitere fortgeschrittene C++-Techniken mit LabEx's interaktiven Programmierumgebungen!