2 진 파일에서 부호없는 바이트를 읽으려고합니다. 그래서 다음 코드를 작성했습니다.파일 스트림에서 서명되지 않은 char을 읽는 C++
#include <iostream>
#include <fstream>
#include <vector>
#include <istream>
std::string filename("file");
size_t bytesAvailable = 128;
size_t toRead = 128;
std::basic_ifstream<unsigned char> inf(filename.c_str(), std::ios_base::in | std::ios_base::binary) ;
if (inF.good())
{
std::vector<unsigned char> mDataBuffer;
mDataBuffer.resize(bytesAvailable) ;
inF.read(&mDataBuffer[0], toRead) ;
size_t counted = inF.gcount() ;
}
결과적으로 counted 변수에 표시된대로 항상 0 바이트로 읽습니다.
이 작업을 수행하기 위해 로캘을 설정해야한다는 웹 참조가있는 것 같습니다. 이 작업을 정확하게 수행하는 방법은 분명하지 않습니다.
같은 코드는 데이터 유형 대신 '서명 숯불'
서명 숯불 Windows에서 작동하는 것 같다 사용하여 위의 코드의 '문자'를 사용하여 작동하지만 colinux 페도라 2.6.22.18에서 실행되지 않습니다.
Linux 용으로 작동 시키려면 어떻게해야합니까?
가 아닌 경우 질문에 대한 대답,하지만 관련.C++에서 문자열 클래스의 정의는'typedef basic_string string;'입니다. 따라서 unsigned char 문자열 클래스를 항상'typedef basic_string bytestring; '으로 만들 수 있습니다. –
사실, 이진 파일을 읽으려는 경우 – David
.read() 및 .write()를 이진/텍스트에 사용할 수있는 경우 스트림 연산자 << and >>은 텍스트 파일 전용입니다. 컴퓨터의 모든 데이터는 궁극적으로 바이너리이며 해석 방법은 사용자가 선택하는 방식입니다. – sfossen