같은 형식을 사용하여 파일에서 직렬화 된 데이터 (알려진 형식 + 엔디안)를 읽는 것이 특히 바람직하지 않습니까? 나는 이식성에 대해 걱정하지 않으며 현실적으로 그것은 오직 나만 사용했을 것이다. 하나의 문제가 압축되지 않은 POD 구조체로 추출하려고 시도하는 것을 알고 있지만 각 구조체에 대해 항상 별도의 operator>
을 정의 할 수 있습니다.std :: fstream에서 비 직렬화
template<typename T> inline std::fstream& operator> (std::fstream& fs, T& i) {
static_assert(std::is_pod<T>::value, "Not POD");
fs.read(reinterpret_cast<char*>(&i), sizeof i);
return fs;
}
template<typename T> inline std::fstream& operator> (std::fstream& fs, std::vector<T>& v) {
static_assert(std::is_pod<T>::value, "Not POD");
fs.read(reinterpret_cast<char*>(&v[0]), sizeof(T) * v.size());
return fs;
}
template<typename T> inline std::fstream& operator> (std::fstream& fs, std::vector<std::vector<T>>& v) {
for (auto& i : v)
fs > i;
return fs;
}
inline std::fstream& operator> (std::fstream& fs, std::string& s) {
fs.read(reinterpret_cast<char*>(&s[0]), s.size());
return fs;
}
std::fstream f("file", std::ifstream::in | std::ifstream::out | std::ifstream::binary);
int i;
char j;
std::vector<std::vector<char>> vec(5, std::vector<char>(8));
f > i > j > vec;
Eh? 'operator> '의 의미를 바꿨습니까? 왜'operator >>'를 사용하지 않겠습니까? – Nim