Membandingkan Array Karakter Tanpa Sensitif Kasus (Case-Insensitive) di C++
Membandingkan array karakter (string) tanpa sensitif kasus di C++ dapat dilakukan dengan beberapa metode. Berikut adalah beberapa contoh:
1. Menggunakan Fungsi tolower()
atau toupper()
Metode ini mengubah semua karakter dalam kedua array menjadi huruf kecil atau besar, lalu membandingkannya.
#include
#include
#include
int main() {
char str1[] = "Hello";
char str2[] = "hello";
// Mengubah semua karakter menjadi huruf kecil
for (int i = 0; str1[i] != '\0'; i++) {
str1[i] = tolower(str1[i]);
}
for (int i = 0; str2[i] != '\0'; i++) {
str2[i] = tolower(str2[i]);
}
// Membandingkan kedua array
if (strcmp(str1, str2) == 0) {
std::cout << "Kedua string sama." << std::endl;
} else {
std::cout << "Kedua string tidak sama." << std::endl;
}
return 0;
}
2. Menggunakan std::transform()
Metode ini menggunakan fungsi std::transform()
untuk mengubah semua karakter menjadi huruf kecil atau besar sebelum membandingkannya.
#include
#include
#include
#include
int main() {
char str1[] = "Hello";
char str2[] = "hello";
// Mengubah semua karakter menjadi huruf kecil
std::transform(str1, str1 + strlen(str1), str1, ::tolower);
std::transform(str2, str2 + strlen(str2), str2, ::tolower);
// Membandingkan kedua array
if (strcmp(str1, str2) == 0) {
std::cout << "Kedua string sama." << std::endl;
} else {
std::cout << "Kedua string tidak sama." << std::endl;
}
return 0;
}
3. Menggunakan Perulangan dan tolower()
atau toupper()
Metode ini membandingkan setiap karakter dalam kedua array secara individual dengan mengubahnya menjadi huruf kecil atau besar.
#include
#include
#include
int main() {
char str1[] = "Hello";
char str2[] = "hello";
// Membandingkan setiap karakter
bool sama = true;
for (int i = 0; str1[i] != '\0' || str2[i] != '\0'; i++) {
if (tolower(str1[i]) != tolower(str2[i])) {
sama = false;
break;
}
}
// Menampilkan hasil
if (sama) {
std::cout << "Kedua string sama." << std::endl;
} else {
std::cout << "Kedua string tidak sama." << std::endl;
}
return 0;
}
4. Menggunakan std::string
dan std::tolower()
Metode ini mengubah kedua array menjadi objek std::string
dan menggunakan std::tolower()
untuk membandingkan kedua string tanpa sensitif kasus.
#include
#include
#include
int main() {
char str1[] = "Hello";
char str2[] = "hello";
std::string s1(str1);
std::string s2(str2);
// Mengubah semua karakter menjadi huruf kecil
std::transform(s1.begin(), s1.end(), s1.begin(), ::tolower);
std::transform(s2.begin(), s2.end(), s2.begin(), ::tolower);
// Membandingkan kedua string
if (s1 == s2) {
std::cout << "Kedua string sama." << std::endl;
} else {
std::cout << "Kedua string tidak sama." << std::endl;
}
return 0;
}
Metode yang Anda pilih tergantung pada preferensi Anda dan kebutuhan khusus dalam program Anda.