C++Builder相談室

このエントリーをはてなブックマークに追加
474デフォルトの名無しさん
麻衣ちゃん板でも書いたんだけど反応がないのでこちらで。

VCで下のようなソースを書いたんですが、
void func ()
{
    sample_stream smp;
    smp << "hoge" << endl;
}
で、VCではまともに表示してくれるんです。
が、友人宅のBCBではまともに動かないそうなんです。

ストリームってendlを呼び出すと、flushを呼び出してその中でバッファのsyncが呼び出されるんですが、
BCBではsample_buf::syncを通過していないそうなんです。(ブレークポイントで調べた)

家にはBCBが入ってないのでどうしてこうなるのかが確かめられません。
どうすれば問題に対処できるのか教えてください。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#if !defined(_SAMPLE_STREAM_)
#define _SAMPLE_STREAM_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <Sstream>
#include <windows.h>

class sample_buf : public std::basic_stringbuf<char>
{
public:
    sample_buf() : std::basic_stringbuf<char>(std::ios_base::out) {}
    virtual ~sample_buf() {}
protected:
    virtual int sync()
    {
        //  表示動作
        return 0;
    }
};

class sample_stream : public std::basic_ostream<char>
{
public:
    sample_stream() : std::basic_ostream<char> (&_db) {}
    virtual ~sample_stream() {}
protected:
    sample_buf _db;
};
#endif