C++:
Làm việc với CSV
Làm thế nào:
Dưới đây là một đoạn mã đọc tệp CSV và in nội dung của nó.
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <sstream>
int main() {
std::string line, cell;
std::vector<std::vector<std::string>> csvData;
std::ifstream file("example.csv");
while (std::getline(file, line)) {
std::stringstream lineStream(line);
std::vector<std::string> rowData;
while (std::getline(lineStream, cell, ',')) {
rowData.push_back(cell);
}
csvData.push_back(rowData);
}
for (const auto& row : csvData) {
for (const auto& col : row) {
std::cout << col << " "; // Tùy vào cấu trúc CSV của bạn, hãy điều chỉnh dấu phân cách.
}
std::cout << std::endl;
}
return 0;
}
Kết quả mẫu cho một CSV chứa tên và tuổi:
John 25
Jane 28
Đi sâu hơn
CSV đã tồn tại từ đầu những năm 1970. Đây là định dạng đi đến cho việc xuất khẩu và nhập dữ liệu đơn giản nhưng không tốt cho dữ liệu phân cấp phức tạp, mà XML và JSON xử lý tốt hơn. C++ không hỗ trợ CSV một cách sẵn có, nhưng việc xử lý tệp và chuỗi là khá trực tiếp. Bạn giải quyết với I/O chuẩn và thao tác chuỗi, trong khi chú ý đến các trường hợp ngoại lệ như dấu ngoặc kép và dấu phẩy trong các ô. Các thư viện như libcsv
và Boost.Tokenizer
có thể đơn giản hóa nhiệm vụ nếu bạn đang xử lý các tệp CSV phức tạp hơn.
Xem thêm
- RFC 4180, định dạng chung và loại MIME cho các tệp CSV.
- Tham khảo C++ cho I/O
- Thư viện C++ Boost
- 10 phút với pandas - Xử lý CSV bằng Python để so sánh