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