Befehlszeilenargumente
Verständnis von Befehlszeilenargumenten
Argumentkomponenten
graph TD
A[Befehlszeilenargumente] --> B[Argumentanzahl: argc]
A --> C[Argumentvektor: argv]
B --> D[Gesamtzahl der Argumente]
C --> E[Array von String-Zeigern]
Grundlegende Argumentstruktur
int main(int argc, char* argv[]) {
// argc: Argumentanzahl
// argv: Argumentvektor
}
Techniken zur Argumentverarbeitung
Beispiel für die Argumentanalyse
#include <iostream>
#include <string>
int main(int argc, char* argv[]) {
// Gesamtzahl der Argumente anzeigen
std::cout << "Gesamtzahl der Argumente: " << argc << std::endl;
// Argumente iterieren
for (int i = 0; i < argc; ++i) {
std::cout << "Argument " << i << ": " << argv[i] << std::endl;
}
return 0;
}
Argumenttypen und -behandlung
Argumenttyp |
Beschreibung |
Beispiel |
Programmname |
Erstes Argument (argv[0]) |
./programm |
Positionale Argumente |
Sequentielle Parameter |
datei1.txt datei2.txt |
Optionale Argumente |
Mit - oder -- vorangestellt |
-v, --verbose |
Erweiterte Argumentverarbeitung
Argumentvalidierung
int main(int argc, char* argv[]) {
// Mindestanforderungen an die Argumente prüfen
if (argc < 2) {
std::cerr << "Verwendung: " << argv[0] << " <Eingabe>" << std::endl;
return 1;
}
// Argument in String konvertieren
std::string input = argv[1];
// Eingabe validieren
if (input.empty()) {
std::cerr << "Ungültige Eingabe" << std::endl;
return 1;
}
return 0;
}
Praktische Szenarien bei LabEx
Beispiel für die Dateiverarbeitung
#include <iostream>
#include <fstream>
#include <string>
int main(int argc, char* argv[]) {
if (argc != 3) {
std::cerr << "Verwendung: " << argv[0]
<< " <Eingabe_Datei> <Ausgabe_Datei>" << std::endl;
return 1;
}
std::ifstream input_file(argv[1]);
std::ofstream output_file(argv[2]);
if (!input_file) {
std::cerr << "Eingabe-Datei kann nicht geöffnet werden" << std::endl;
return 1;
}
if (!output_file) {
std::cerr << "Ausgabe-Datei kann nicht geöffnet werden" << std::endl;
return 1;
}
// Dateibearbeitungslogik
std::string zeile;
while (std::getline(input_file, zeile)) {
output_file << zeile << std::endl;
}
return 0;
}
Kompilierung und Ausführung
## Programm kompilieren
g++ -std=c++17 argument_processor.cpp -o processor
## Mit Argumenten ausführen
./processor eingabe.txt ausgabe.txt
Best Practices
- Überprüfen Sie immer die Argumentanzahl.
- Überprüfen Sie die Gültigkeit der Argumente.
- Geben Sie klare Verwendungshinweise.
- Behandeln Sie potenzielle Fehler angemessen.
- Verwenden Sie moderne C++-Techniken für die Argumentverarbeitung.
Häufige Herausforderungen bei der Argumentanalyse
graph TD
A[Herausforderungen bei der Argumentanalyse]
A --> B[Nicht genügend Argumente]
A --> C[Ungültige Argumenttypen]
A --> D[Komplexe Argumentformate]
A --> E[Fehlerbehandlung]