您好,登錄后才能下訂單哦!
在C++中,序列化是將對象的狀態信息轉換為可以存儲或傳輸的格式的過程
示例代碼:
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/vector.hpp>
#include <fstream>
#include <vector>
int main() {
// 保存數據到文件
std::ofstream ofs("data.txt");
boost::archive::text_oarchive oa(ofs);
std::vector<int> data = {1, 2, 3, 4, 5};
oa << data;
// 從文件加載數據
std::ifstream ifs("data.txt");
boost::archive::text_iarchive ia(ifs);
std::vector<int> loaded_data;
ia >> loaded_data;
}
示例代碼:
#include <cereal/archives/binary.hpp>
#include <cereal/types/vector.hpp>
#include <fstream>
#include <vector>
int main() {
// 保存數據到文件
std::ofstream ofs("data.bin", std::ios::binary);
cereal::BinaryOutputArchive oa(ofs);
std::vector<int> data = {1, 2, 3, 4, 5};
oa(data);
// 從文件加載數據
std::ifstream ifs("data.bin", std::ios::binary);
cereal::BinaryInputArchive ia(ifs);
std::vector<int> loaded_data;
ia(loaded_data);
}
#include <iostream>
#include <fstream>
#include <stdexcept>
void save_data(const std::string& filename) {
try {
std::ofstream ofs(filename, std::ios::binary);
if (!ofs) {
throw std::runtime_error("無法打開文件");
}
// 執行序列化操作
} catch (const std::exception& e) {
std::cerr << "保存數據時發生錯誤: " << e.what() << std::endl;
}
}
void load_data(const std::string& filename) {
try {
std::ifstream ifs(filename, std::ios::binary);
if (!ifs) {
throw std::runtime_error("無法打開文件");
}
// 執行反序列化操作
} catch (const std::exception& e) {
std::cerr << "加載數據時發生錯誤: " << e.what() << std::endl;
}
}
int main() {
save_data("data.bin");
load_data("data.bin");
}
在這個示例中,我們使用了C++的異常處理機制來捕獲和記錄序列化過程中可能出現的錯誤。當發生錯誤時,我們將錯誤信息輸出到標準錯誤流(std::cerr)。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。