Cara Memeriksa Ekstensi File String dalam C++
Dalam pemrograman C++, seringkali kita perlu memeriksa ekstensi file dari string yang mewakili nama file. Misalnya, kita ingin memastikan bahwa pengguna mengunggah file dengan ekstensi ".txt" atau ".csv". Berikut adalah cara untuk memeriksa ekstensi file string dalam C++:
1. Menggunakan std::string::find_last_of()
Fungsi find_last_of()
dalam C++ mencari karakter terakhir yang cocok dengan string yang diberikan. Dalam hal ini, kita dapat mencari karakter titik (".") terakhir dalam nama file.
#include
#include
using namespace std;
int main() {
string filename = "example.txt";
size_t pos = filename.find_last_of('.');
if (pos != string::npos) {
string extension = filename.substr(pos + 1);
cout << "Ekstensi file: " << extension << endl;
} else {
cout << "File tidak memiliki ekstensi." << endl;
}
return 0;
}
Penjelasan:
- Kode tersebut terlebih dahulu mencari karakter titik (".") terakhir dalam nama file menggunakan
find_last_of()
. - Jika karakter titik ditemukan,
pos
akan berisi indeks karakter titik. - Kemudian,
substr()
digunakan untuk mengambil substring mulai dari indeks setelah karakter titik hingga akhir string. - Substring tersebut adalah ekstensi file.
2. Menggunakan std::string::rfind()
Fungsi rfind()
mirip dengan find_last_of()
, tetapi memungkinkan Anda mencari substring tertentu.
#include
#include
using namespace std;
int main() {
string filename = "example.txt";
size_t pos = filename.rfind('.');
if (pos != string::npos) {
string extension = filename.substr(pos + 1);
cout << "Ekstensi file: " << extension << endl;
} else {
cout << "File tidak memiliki ekstensi." << endl;
}
return 0;
}
Penjelasan:
- Kode ini sama dengan kode sebelumnya, tetapi menggunakan
rfind()
untuk mencari karakter titik (".") terakhir. - Sisanya dari kode berfungsi dengan cara yang sama.
3. Menggunakan boost::filesystem::path
Jika Anda menggunakan library Boost, boost::filesystem::path
menyediakan cara yang lebih elegan untuk menangani manipulasi jalur file, termasuk memeriksa ekstensi file.
#include
#include
using namespace std;
using namespace boost::filesystem;
int main() {
path filename("example.txt");
string extension = filename.extension().string();
if (!extension.empty()) {
cout << "Ekstensi file: " << extension << endl;
} else {
cout << "File tidak memiliki ekstensi." << endl;
}
return 0;
}
Penjelasan:
- Kode ini menggunakan
boost::filesystem::path
untuk mewakili nama file. extension()
mengembalikan objekpath
yang berisi ekstensi file.string()
digunakan untuk mengonversi objekpath
menjadi string.
Kesimpulan
Ada beberapa cara untuk memeriksa ekstensi file string dalam C++. Metode yang Anda pilih akan bergantung pada kebutuhan dan preferensi Anda.