나는이 질문과 비슷한 질문을 보았습니다. 그러나이 모든 시도는 제 경우에는 효과가 없습니다. 세 가지 다른 정수 값을 가진 클래스를 이진 파일에 저장하려고합니다. C++ 스트림 과부하에 대해이 문제를 해결해야합니다. 연산자 "< <"/ ">>". 그래서 내 실제 코드 내 파일에서 바이너리로 정수 값을 저장하는 것하지만 내 이진 파일에서 그들을 다시로드하려고하면 단지 원래 값과 같은 아닌 정수 값을 반환합니다.
나의 등급 :정수 값을 가진 클래스를 스트림 연산자로 이진 파일로 저장 >>/<<
class Time{
public:
int hour;
int minute;
int second;
};
내 방법은 파일에 단일 값을 저장합니다. 나는 reinterpret_cast이 하나를 시도하지 않고, 예를 들면 : (숯불 *)이 대한 결과 기능을 테스트하려면 코드 $ time.hour
std::ostream& operator<<(std::ostream &os, Time &time){
os.write(reinterpret_cast<const char *>(&time.hour),sizeof(int));
os.write(reinterpret_cast<const char *>(&time.minute),sizeof(int));
os.write(reinterpret_cast<const char *>(&time.second),sizeof(int));
return os;
}
std::istream& operator >>(std::istream &is,Time &time){
is.read((char*)&time.hour,sizeof(int));
is.read((char*)&time.minute,sizeof(int));
is.read((char*)&time.second,sizeof(int));
return is;
}
은 1,878,006,928 입니다 :
int main() {
Time time;
time.hour = 24;
time.minute = 33;
time.second = 10;
std::ofstream os("test.txt", std::ios::binary | std::ios::out);
os << time;
Time time2;
std::ifstream is("test.txt",std::ios::binary | std::ios::in);
is >> time2;
std::cout << time2.hour;
}
당신을 희망 내 문제를 이해할 수 있습니다.
' 쓰기 작업 후에 os.flush()를 호출합니다. – ivaigult