1. Stream-Manipulatoren
#include <iostream>
#include <iomanip>
#include <string>
int main() {
std::string name = "LabEx";
double preis = 49.99;
// Breite und Ausrichtung
std::cout << std::setw(10) << std::left << name << std::endl;
// Genauigkeit für Gleitkommazahlen
std::cout << std::fixed << std::setprecision(2) << preis << std::endl;
return 0;
}
2. Zeichenkettenausfüllung
Technik |
Methode |
Beispiel |
Linksausrichtung |
std::setw() |
std::cout << std::setw(10) << std::left << str; |
Rechtsausrichtung |
std::setw() |
std::cout << std::setw(10) << std::right << str; |
Benutzerdefinierte Füllung |
std::setfill() |
std::cout << std::setfill('0') << std::setw(5) << num; |
graph TD
A[Zeichenkettenformatierung] --> B{Techniken}
B --> C[Stream-Manipulatoren]
B --> D[Benutzerdefinierte Formatierung]
B --> E[Umwandlungsmethoden]
3. Zeichenkettenumwandlung
#include <string>
#include <sstream>
int main() {
// Zahl in Zeichenkette
int zahl = 42;
std::string str_zahl = std::to_string(zahl);
// Zeichenkette in Zahl
std::string eingabe = "123.45";
double wert = std::stod(eingabe);
return 0;
}
#include <iostream>
#include <iomanip>
int main() {
// Hexadezimale Formatierung
int hex_wert = 255;
std::cout << std::hex << hex_wert << std::endl;
// Wissenschaftliche Notation
double wissenschaftliche_zahl = 1234.5678;
std::cout << std::scientific << wissenschaftliche_zahl << std::endl;
return 0;
}
#include <sstream>
#include <string>
#include <iomanip>
std::string formatCurrency(double betrag) {
std::stringstream ss;
ss << std::fixed << std::setprecision(2) << "$" << betrag;
return ss.str();
}
int main() {
double preis = 49.99;
std::string formatiert = formatCurrency(preis);
std::cout << formatiert << std::endl;
return 0;
}
Leistungsaspekte
- Verwenden Sie
std::stringstream
für komplexe Formatierungen
- Minimieren Sie Änderungen an Stream-Manipulatoren
- Bevorzugen Sie Formatierungen zur Compile-Zeit, wenn möglich
Muster |
Beschreibung |
Beispiel |
Währung |
Formatieren von Währungswerten |
$49.99 |
Prozent |
Anzeigen von Prozentangaben |
75.50% |
Ausrichtung |
Ausrichten und füllen von Zeichenketten |
0042 |
Fehlerbehandlung
#include <string>
#include <stdexcept>
void sichereUmwandlung(const std::string& eingabe) {
try {
double wert = std::stod(eingabe);
} catch (const std::invalid_argument& e) {
// Fehler bei der Umwandlung behandeln
} catch (const std::out_of_range& e) {
// Fehler bei Überlauf behandeln
}
}
Best Practices
- Verwenden Sie geeignete Formatierungsmethoden
- Behandeln Sie potenzielle Umwandlungsfehler
- Wählen Sie die richtige Technik für Ihren Anwendungsfall
- Berücksichtigen Sie die Leistungsimplikationen
- Erhalten Sie die Lesbarkeit des Codes
Komplettes Beispiel
#include <iostream>
#include <iomanip>
#include <sstream>
class LabExFormatter {
public:
static std::string formatProduct(const std::string& name, double preis) {
std::stringstream ss;
ss << std::left << std::setw(15) << name
<< std::right << std::fixed << std::setprecision(2)
<< " $" << preis;
return ss.str();
}
};
int main() {
std::string produkt = "C++ Kurs";
double preis = 49.99;
std::cout << LabExFormatter::formatProduct(produkt, preis) << std::endl;
return 0;
}
Mit der Beherrschung dieser Zeichenkettenformatierungstechniken können Sie professionellere und lesbarere Ausgaben in Ihren C++-Anwendungen erstellen.