Techniken zur Eingabe von Zeichenketten (Strings)
Eingabemethoden für Struct-Zeichenketten
1. Eingabe über den cin
-Stream
Die am häufigsten verwendete Methode für die Eingabe von Zeichenketten:
struct Person {
std::string name;
int age;
};
Person user;
std::cout << "Enter name: ";
std::cin >> user.name; // Simple input
2. getline
für die Eingabe einer ganzen Zeile
Verarbeitung von Eingaben mit Leerzeichen:
std::cout << "Enter full name: ";
std::getline(std::cin, user.name); // Captures entire line
Vergleich der Eingabetechniken
Technik |
Vorteile |
Nachteile |
cin >> |
Einfach |
Hält bei Leerzeichen an |
getline() |
Erfasst ganze Zeile |
Erfordert sorgfältige Behandlung |
cin.get() |
Flexibel |
Komplexere Syntax |
Fortgeschrittene Eingabeverarbeitung
graph TD
A[String Input] --> B{Input Method}
B --> |Simple Word| C[cin Stream]
B --> |Full Line| D[getline()]
B --> |Complex Input| E[Custom Parsing]
3. Eingabe über Konstruktoren
Initialisieren von Structs mit Eingabemethoden:
struct Student {
std::string name;
Student() {
std::cout << "Enter student name: ";
std::getline(std::cin, name);
}
};
Strategien zur Fehlerbehandlung
void safeStringInput(std::string& input) {
while(true) {
std::getline(std::cin, input);
if(!input.empty()) break;
std::cout << "Invalid input. Try again: ";
}
}
LabEx-Tipp
Bei LabEx empfehlen wir, mehrere Eingabetechniken zu beherrschen, um verschiedene Szenarien der Zeichenketteneingabe effektiv zu behandeln.
Techniken zur Eingabevalidierung
- Prüfung der Länge
- Validierung des Zeicentyps
- Entfernen von Leerzeichen
- Behandlung von Sonderzeichen
Beispiel für umfassende Eingabe
struct UserProfile {
std::string username;
void validateInput() {
while(username.length() < 3 || username.length() > 20) {
std::cout << "Username must be 3-20 characters: ";
std::getline(std::cin, username);
}
}
};