Pemrosesan file CSV di C++ biasanya melibatkan membaca atau menulis file teks yang datanya dipisahkan dengan tanda koma (,
). C++ menyediakan kemampuan untuk bekerja dengan file menggunakan library standar seperti <fstream>
.
Berikut adalah langkah-langkah untuk membaca dan menulis file CSV di C++.
1. Membaca File CSV
Kode berikut menunjukkan cara membaca file CSV dan menyimpan datanya ke dalam struktur seperti vector.
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <string>
using namespace std;
int main() {
string namaFile = "data.csv";
ifstream file(namaFile);
if (!file.is_open()) {
cerr << "Tidak dapat membuka file: " << namaFile << endl;
return 1;
}
vector<vector<string>> data; // Menyimpan data CSV
string baris;
// Membaca baris demi baris
while (getline(file, baris)) {
stringstream ss(baris);
string sel; // Untuk menyimpan sel individual
vector<string> barisData;
// Memisahkan elemen berdasarkan koma
while (getline(ss, sel, ',')) {
barisData.push_back(sel);
}
data.push_back(barisData);
}
file.close();
// Menampilkan data yang telah dibaca
cout << "Data dalam file CSV:\n";
for (const auto& baris : data) {
for (const auto& sel : baris) {
cout << sel << "\t";
}
cout << endl;
}
return 0;
}
Penjelasan:
ifstream file(namaFile)
: Membuka file untuk dibaca.getline(file, baris)
: Membaca satu baris data dari file.stringstream
: Memproses baris untuk memisahkan data menggunakan tanda koma.
2. Menulis File CSV
Kode berikut menunjukkan cara menulis data ke file CSV.
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
int main() {
string namaFile = "output.csv";
ofstream file(namaFile);
if (!file.is_open()) {
cerr << "Tidak dapat membuka file: " << namaFile << endl;
return 1;
}
// Data untuk ditulis ke file
vector<vector<string>> data = {
{"Nama", "Umur", "Kota"},
{"Alice", "30", "Jakarta"},
{"Bob", "25", "Bandung"},
{"Charlie", "35", "Surabaya"}
};
// Menulis data ke file CSV
for (const auto& baris : data) {
for (size_t i = 0; i < baris.size(); ++i) {
file << baris[i];
if (i < baris.size() - 1) file << ","; // Tambahkan koma kecuali di akhir baris
}
file << endl; // Baris baru setelah setiap baris data
}
file.close();
cout << "Data berhasil ditulis ke " << namaFile << endl;
return 0;
}
Penjelasan:
ofstream file(namaFile)
: Membuka file untuk menulis.- Loop digunakan untuk menulis setiap baris data ke file, dengan elemen dipisahkan oleh koma.
3. Membaca dan Menulis Secara Bersamaan
Jika Anda perlu membaca data dari satu file CSV, memprosesnya, dan menulis hasilnya ke file lain, gabungkan kedua kode di atas. Misalnya:
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <string>
using namespace std;
int main() {
// Membaca file CSV
string inputFile = "data.csv";
string outputFile = "output.csv";
ifstream fileIn(inputFile);
ofstream fileOut(outputFile);
if (!fileIn.is_open() || !fileOut.is_open()) {
cerr << "Tidak dapat membuka file.\n";
return 1;
}
string baris;
while (getline(fileIn, baris)) {
stringstream ss(baris);
string sel;
vector<string> barisData;
while (getline(ss, sel, ',')) {
barisData.push_back(sel);
}
// Memproses data (contoh: menambahkan string "Processed")
for (size_t i = 0; i < barisData.size(); ++i) {
barisData[i] += "_Processed";
}
// Menulis data ke file output
for (size_t i = 0; i < barisData.size(); ++i) {
fileOut << barisData[i];
if (i < barisData.size() - 1) fileOut << ",";
}
fileOut << endl;
}
fileIn.close();
fileOut.close();
cout << "Data berhasil diproses dan ditulis ke " << outputFile << endl;
return 0;
}
Contoh File Input dan Output
Input (data.csv
):
Nama,Umur,Kota
Alice,30,Jakarta
Bob,25,Bandung
Charlie,35,Surabaya
Output (output.csv
):
Nama_Processed,Umur_Processed,Kota_Processed
Alice_Processed,30_Processed,Jakarta_Processed
Bob_Processed,25_Processed,Bandung_Processed
Charlie_Processed,35_Processed,Surabaya_Processed
Tips Tambahan
- Error Handling:
- Selalu periksa apakah file berhasil dibuka sebelum membaca atau menulis.
- Delimeter Lain:
- Untuk CSV dengan pembatas selain koma (misalnya
;
), ubah parametergetline(ss, sel, ',')
menjadi karakter pembatas lain.
- Untuk CSV dengan pembatas selain koma (misalnya
- String dengan Koma:
- Jika data Anda memiliki koma di dalam string, gunakan tanda kutip (
"
) untuk menanganinya.
- Jika data Anda memiliki koma di dalam string, gunakan tanda kutip (
Jika Anda memiliki kebutuhan khusus terkait CSV, beri tahu saya! 😊
Leave a Reply