ネタ元 → fwriteについて
vector<char> のナカミをバイナリファイルにごそっと書き込みたいらしい。
んでもって fwrite の使い方でぢたばたしておったようです。
えとね、<fstream> <algorithm> <iterator> のコンビネーションでさっくり書けるですよ♪
#include <fstream> // [io]fstream
#include <algorithm> // copy, equal
#include <vector> // vector
#include <list> // list
#include <iterator> // [io]streambuf_iterator
#include <cstdlib> // rand
#include <cassert> // assert
using namespace std;
int main() {
vector<char> src;
// 五万文字ほどテケトーに埋める
for ( int i = 0; i < 50000; ++i ) {
src.push_back(static_cast<char>(rand()));
}
// 書き込みオープンし、
ofstream ostrm("test.dat", ios::binary);
// そいつのstream_bufに直接ぶっこむ: copy一発♪
copy(src.begin(), src.end(), ostreambuf_iterator<char>(ostrm));
ostrm.close();
// 読み込みオープンし、
ifstream istrm("test.dat", ios::binary);
// istreambufから直接list<char>を生成してまう。
list<char> dst((istreambuf_iterator<char>(istrm)),
(istreambuf_iterator<char>()));
istrm.close();
// うまくいったかな?
assert( src.size() == dst.size() );
assert( equal(src.begin(), src.end(), dst.begin()) );
}
[追記] 投稿ボタン押したとたんに
.Text - Application Error ! とか
Service Unavailable とか... なんかヘン > くまさばちゃん