반응형
c++에서는 file stream이라는 것을 제공합니다.
file stream의 기본은 text file이여서 binary file로 사용하려면 문제가 발생합니다.
특히 ofstream에서는 "0x0d"뒤 자동으로 "0x0a"값이 들어가고 ifstream에서는 eof를 잘 못 인식하는 경우가 발생합니다.
1. ofstream 에서는 다음과 같이 생성해야 합니다.
ofstream out(fullpath, std::ofstream::binary);
2. ifstream에서는 다음과 같이 생성해서 버퍼로 읽어야 합니다.
std::string fullpath = "test.bin";
ifstream in(fullpath, std::ifstream::binary);
UINT8 *p_string = new UINT8[4096];
// get its size:
in.seekg(0, std::ios::end);
int fileSize = in.tellg();
in.seekg(0, std::ios::beg);
// read the data:
int nCount = 0;
while (nCount < fileSize) {
in.read((char *)p_string, 0x10);
int nStreamReadSize = in.gcount();
if (nStreamReadSize != nReadSize) {
std::cout << "Error..." << std::endl;
}
if (in.eof()) {
std::cout << "EOF" << std::endl;
}
if(in.fail()) {
std::cout << GetLastError() << std::endl;
//throw std::system_error{ errno, std::generic_category(), fullpath };
}
nCount += nStreamReadSize;
}
in.close();
반응형
'세상사는이야기' 카테고리의 다른 글
디즈니 플러스 환불 관련 (0) | 2022.11.22 |
---|---|
c++ namespace 관련 문제 (0) | 2022.08.22 |
AMD CPU 먹통, 멈춤 문제 (2) | 2022.08.16 |
서초구 방배역 자전거 서비스 센터 이용 후기 (0) | 2022.07.11 |
온누리 모바일 상품권 (0) | 2021.05.04 |