- PR -

iostream.h→iostreamへ変更したらバイナリモードで開けなくなった。

1
投稿者投稿内容
1048
会議室デビュー日: 2003/09/08
投稿数: 18
投稿日時: 2004-02-19 15:06
こんにちは1048です。

最近、私の開発環境をVC++6.0からVC++.NETへ変更したので、
iostream.hをiostreamに変更したら
どうやら、クラスの構造が変わっていて、エラーがたくさん出てしまいました。
それについて、いろいろ調べながら直していたのですが、
setmode(filebuf::binary)がなくなっていて、バイナリモードの指定は
オープン時にするそうですが、オープンがうまくできません。(コンパイルは通る)

プログラムを走らせてファイルサイズを確認してみると、-1となっているのです。
どなたか解決法をご存知の方がいたらご教示ください。

↓↓↓↓↓ソース抜粋↓↓↓↓↓
buffer = (unsigned char *)malloc(32532);

std::fstream fs;
fs.open("ファイルの名前" std::ios::binary);

fs.seekg(0, std::ios::end );
unsigned long filesize = fs.tellg();
fs.seekg(0, std::ios::beg);


while(totalwritten != filesize)
{
fs.read((char*)buffer, 32532);
amtread = fs.gcount();
/*
bufferをデータベースへ書き込む処理
*/
totalwritten = totalwritten + amtread;
}


○開発環境
WindowsXp
VC++6.0→VC.Net
Win32 Applicationで開発




[ メッセージ編集済み 編集者: 1048 編集日時 2004-02-19 15:12 ]
ゆうじゅん
ぬし
会議室デビュー日: 2004/01/16
投稿数: 347
投稿日時: 2004-02-19 15:28
iostreamを使ったことがないので間違っているかもしれませんが

Open時の読み込みモードの指定が足りないのではないでしょうか?

fs.open("ファイルの名前" std::ios::binary|std::ios::in);
と変更したらうごきませんか?
1048
会議室デビュー日: 2003/09/08
投稿数: 18
投稿日時: 2004-02-19 15:43
うおおーーー!!!
動きました!!!

ありがとうございます。モードの指定が足りなかったんですね。

すばやい対応感謝いたします。
1

スキルアップ/キャリアアップ(JOB@IT)