나는 파일에 비트를 쓰고 싶지만, 물론 fstream의 쓰기 함수는 이것을 지원하지 않는다 : std :: bitset을 가지고있다. 문자열을 사용하여 글자로 각 8 비트 그룹을 변환하는 것 외에 다른 방법을 생각할 수 없다 ...비트 셋 데이터를 파일에 쓰는 방법은 무엇입니까?
누구나 좋은 방법을 알고 계십니까?
는나는 파일에 비트를 쓰고 싶지만, 물론 fstream의 쓰기 함수는 이것을 지원하지 않는다 : std :: bitset을 가지고있다. 문자열을 사용하여 글자로 각 8 비트 그룹을 변환하는 것 외에 다른 방법을 생각할 수 없다 ...비트 셋 데이터를 파일에 쓰는 방법은 무엇입니까?
누구나 좋은 방법을 알고 계십니까?
는시도 :
#include <bitset>
#include <fstream>
int main() {
using namespace std;
const bitset<12> x(2730ul);
cout << "x = " << x << endl;
ofstream ofs("C:\\test.txt"); // write as txt
if (ofs) {
// easy way, use the stream insertion operator
ofs << x << endl;
// using fstream::write()
string s = x.to_string();
ofs.write(s.c_str(), s.length());
}
return 0;
}
'마스크'는 무엇인가요? 왜 const 비트셋을 만들고 같은 이름을 가진 또 다른 비트셋을 만드나요? –
내 대답이 업데이트되었습니다.보세요. 그것들은 SGI의 비트셋 예제를 빠르게 편집하여 얻은 결과물입니다. – dirkgently
좋습니다. ofstream 연산자 <<와 같지만 fstream.write() ...는 작동하지 않습니다. –
음, 그 일의 "A"방법은 직렬화 방법으로 문자열을 사용하는 것입니다. 문자열 인수를 취하는 비트 생성자가 있으며,이를 반환하는 to_string() 멤버 함수가 있습니다. < <도 있고 >> 생성자를 utlize하고 스트림 삽입 및 추출을 위해 to_string() 함수를 사용하는 >> 도우미 연산자가 있습니다. 그것은 귀하의 요구 사항에 따라 당신을 위해 작동 할 수 있습니다.
한 응용 프로그램에서 우리에게 충분히 압축되지 않았으므로 bitset (인터페이스가 같음)과 비슷한 클래스를 작성했지만 바이트 스트림으로 직렬화 할 수도 있습니다. 즉, 반환하는 함수가 있음을 의미합니다. 그것을 구성하는 기본 바이트 배열에 대한 포인터. 몇 가지 구현을 볼 소스가 있다면 작성하기가 너무 어렵지 않습니다.
불행한 일이지만, 이런 종류의 구현은 사용하기에 매우 좋았을 것입니다. – jokoon