Membandingkan String dalam Argumen Command-Line di C++
Program C++ dapat menerima input dari pengguna melalui command-line. Input ini disimpan dalam array string yang disebut argv. Kita sering perlu membandingkan string dalam argv untuk menentukan perilaku program. Artikel ini akan membahas cara membandingkan string dalam argv di C++.
Mendapatkan Argumen Command-Line
Setiap program C++ memiliki fungsi main
yang menerima dua argumen:
- argc: Jumlah argumen yang diberikan.
- argv: Array string yang berisi argumen.
Berikut contoh sederhana:
#include
int main(int argc, char *argv[]) {
std::cout << "Jumlah argumen: " << argc << std::endl;
for (int i = 0; i < argc; ++i) {
std::cout << "Argumen " << i << ": " << argv[i] << std::endl;
}
return 0;
}
Kode ini akan mencetak jumlah argumen yang diberikan dan isi dari setiap argumen.
Membandingkan String dalam argv
Ada beberapa cara untuk membandingkan string dalam argv:
1. Menggunakan Operator Perbandingan (==
, !=
, <
, >
, dll.)
Kita dapat menggunakan operator perbandingan untuk membandingkan string secara langsung. Namun, operator ini membandingkan pointer ke string, bukan kontennya. Untuk membandingkan konten string, gunakan fungsi strcmp
dari library cstring
.
#include
#include
int main(int argc, char *argv[]) {
if (argc < 3) {
std::cerr << "Harap berikan dua argumen!" << std::endl;
return 1;
}
if (strcmp(argv[1], argv[2]) == 0) {
std::cout << "Argumen 1 dan 2 sama!" << std::endl;
} else {
std::cout << "Argumen 1 dan 2 berbeda!" << std::endl;
}
return 0;
}
Contoh ini membandingkan argumen pertama dan kedua. Jika keduanya sama, akan dicetak "Argumen 1 dan 2 sama!". Jika berbeda, akan dicetak "Argumen 1 dan 2 berbeda!".
2. Menggunakan Fungsi std::string
Kita dapat mengubah char*
menjadi std::string
untuk membandingkan konten string secara langsung.
#include
#include
int main(int argc, char *argv[]) {
if (argc < 3) {
std::cerr << "Harap berikan dua argumen!" << std::endl;
return 1;
}
std::string arg1(argv[1]);
std::string arg2(argv[2]);
if (arg1 == arg2) {
std::cout << "Argumen 1 dan 2 sama!" << std::endl;
} else {
std::cout << "Argumen 1 dan 2 berbeda!" << std::endl;
}
return 0;
}
Kode ini melakukan hal yang sama seperti kode sebelumnya, tetapi menggunakan std::string
untuk membandingkan konten string.
3. Menggunakan Algoritma Perbandingan String
Ada banyak algoritma perbandingan string yang tersedia dalam C++. Beberapa contohnya adalah:
std::equal
: Membandingkan dua rentang string untuk kesetaraan.std::lexicographical_compare
: Membandingkan dua rentang string berdasarkan urutan leksikografis.std::mismatch
: Menemukan ketidakcocokan pertama antara dua rentang string.
Anda dapat memilih algoritma yang paling sesuai dengan kebutuhan Anda.
Kesimpulan
Membandingkan string dalam argv di C++ adalah tugas umum dalam pengembangan program. Ada berbagai cara untuk melakukan perbandingan ini, tergantung pada kebutuhan Anda. Penting untuk memilih metode yang paling efektif dan mudah dipahami untuk kode Anda.