Полагаю Вам нужно перегрузить
std::ostream& operator<<(std::ostream& s, bitset<8000>& b)
Ну как-то так:
Код:
#include <fstream>
#include <iostream>
#include <bitset>
using namespace std;
typedef std::bitset<8000> myBitset;
std::ostream&
operator<<(std::ostream& s, myBitset& b){
std::string tmpStr(b.to_string());
for (size_t i = 0; i<tmpStr.length(); i+=8*sizeof(char)){
std::bitset<8*sizeof(char)> tb(tmpStr, i, 8*sizeof(char));
s << (char)tb.to_ulong();
}
return s;
};
int main(){
myBitset bs(65);
ofstream myfile;
myfile.open ("example.bin");
myfile << bs;
myfile.close();
return 0;
}
GCC 4.2.1, Linux
Цитата:
Сообщение от crawler
А, самый цимес. В связи с большим размером сета, .to_ulong() кидает throw.
|
Самый что?? А что исключение - так резонно вполне, переполнение на таком размере очень даже вероятно.